Files
FoxLang/LIBRARIES.md
T

4.6 KiB
Raw Blame History

📚 Система библиотек FoxLang

Как работает include

FoxLang поддерживает подключение внешних файлов через include("filename.fox"). Система работает следующим образом:

Поиск файлов

  1. Относительный путь: Сначала ищет файл относительно текущего .fox файла
  2. Абсолютный путь: Если не найден, ищет рядом с исполняемым файлом

Структура проекта

project/
├── main.fox           # Основной скрипт
├── libs/              # Папка с библиотеками
│   ├── net.fox        # Сетевые функции
│   ├── utils.fox      # Утилиты
│   └── math.fox       # Математические функции
└── foxlang            # Исполняемый файл

Подключение библиотек

// В main.fox
include("libs/net.fox");    // Относительно main.fox
include("libs/utils.fox");

// Теперь доступны функции из библиотек
string ip = get_public_ip();
int result = max(10, 20);

🌐 Библиотека net.fox

Что изменилось

Раньше: net.fox был просто заглушкой с комментариями Сейчас: Полноценная библиотека с удобными функциями высокого уровня

Основные функции

HTTP клиент

// Простой GET с обработкой ошибок
string response = get("https://api.example.com");

// POST с JSON данными
string result = post_json("https://api.example.com/data", "{\"key\":\"value\"}");

// Получение публичного IP
string ip = get_public_ip();

TCP клиент

// Проверка доступности сервера
bool available = ping("google.com", 80);

// Отправка сообщения с автоматическим управлением соединением
string response = send_message("localhost", 8080, "Hello Server!");

Утилиты

// Проверка интернет-соединения
if (is_online()) {
    print("Internet is available");
}

Преимущества новой библиотеки

  1. Автоматическая обработка ошибок: Не нужно проверять каждый вызов
  2. Упрощенный API: Одна функция вместо нескольких низкоуровневых
  3. Готовые решения: ping, проверка интернета, получение IP
  4. Безопасность: Автоматическое закрытие соединений

🛠 Библиотека utils.fox

Математические функции

int maximum = max(15, 23);
int minimum = min(15, 23);

Работа со строками

string repeated = repeat("Fox", 3); // "FoxFoxFox"
bool starts = starts_with("FoxLang", "Fox"); // true

Утилиты для массивов

array numbers 5;
// ... заполнение массива ...

print_array(numbers, 5);    // Вывод содержимого
bubble_sort(numbers, 5);    // Сортировка

📝 Пример использования

// main.fox
include("libs/net.fox");
include("libs/utils.fox");

print("=== FoxLang Project Demo ===");

// Сетевые функции
if (is_online()) {
    string ip = get_public_ip();
    print("Your IP: " + ip);
}

// Математика
int result = max(42, 17);
print("Maximum: " + result);

// Массивы
array data 3;
set(data, 0, 100);
set(data, 1, 50);
set(data, 2, 75);

print("Before sorting:");
print_array(data, 3);

bubble_sort(data, 3);

print("After sorting:");
print_array(data, 3);

🚀 Запуск

# Компиляция
cd src
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang

# Запуск проекта с библиотеками
./foxlang ../test/example_with_libs.fox

💡 Создание собственных библиотек

  1. Создайте файл в папке libs/
  2. Определите функции
  3. Подключите через include("libs/your_lib.fox")
  4. Используйте функции в основном коде

Система автоматически найдет файл относительно вашего скрипта!