Simplelines 1.1 Документация
Основы и команды: самое важное
Simplelines в версии 1.1 содержит около ~35-40 функций, некоторые маленькие, некоторые большие, но все они выполнены всего в одной строке.
Итак, об этой библиотеке:
одна строка вместо ста, напиши и будь свободен – это та же функция, но в одной строке вместо десяти, и даже настраиваемая! Это рай для разработчика! Сегодня в этой документации мы рассмотрим все основные функции Simplelines.
Simplelines может быть очень полезным инструментом для создания консольных утилит на C++.
Введение
Перед использованием библиотеки Simplelines пользователь обязан прочитать
лицензионный документ (лицензия MIT) в файле LICENSE.txt.
Программирование связано со многими сложностями, и каждая сложность требует решения.
С Simplelines для C++ некоторые из этих сложностей сводятся к одной простой строке!
(См. README.txt)
Поехали! Летим в небеса лёгкого кода!
Подключение библиотеки
В C++ Simplelines подключается следующим кодом:
#include "simplelines.hpp" // Импорт simplelines.hpp — всей библиотеки
int main() {
// ...ваш код здесь
sl::example();
}
ВАЖНО! Разместите файл библиотеки simplelines.hpp рядом с вашей программой.
Функции Simplelines вызываются так:
sl::example();
Это пример; в Simplelines нет реальной функции 'example()'.
1. Форматирование текста
Многие устали писать небезопасные вызовы system(), а ANSI-коды сложно запомнить. С Simplelines форматирование текста становится простым.
1.1. Синий текст
Это действительно просто — напишите эту команду в вашем коде:
sl::blue("Hello, world!"); // Синий текст "Hello, world!" без переноса строки
// ИЛИ
sl::blue("Hello, world!\n"); // Синий текст "Hello, world!" с переносом строки
1.2. Зелёный текст
То же, что и синий, но с зелёным вместо синего:
sl::green("Hello, world!"); // Зелёный текст "Hello, world!" без переноса строки
// ИЛИ
sl::green("Hello, world!\n"); // Зелёный текст "Hello, world!" с переносом строки
1.3. Жёлтый текст
То же, что синий или зелёный. Жёлтый текст — жёлтый.
sl::yellow("Hello, world!"); // Жёлтый текст "Hello, world!" без переноса строки
// ИЛИ
sl::yellow("Hello, world!\n"); // Жёлтый текст "Hello, world!" с переносом строки
1.4. Мигающий текст
Один из эффектов "вау", идеально подходит для текста в играх... но только в консоли. =)
sl::flashing("Hello, world!"); // Мигающий текст "Hello, world!" без переноса строки
// ИЛИ
sl::flashing("Hello, world!\n"); // Мигающий текст "Hello, world!" с переносом строки
Примечание: Изменение цвета фона в RGB
Также в консоли изменяет цвет фона консоли в RGB. Например, белый:
sl::rgbBg(255, 255, 255) // 255, 255, 255 в RGB — белый цвет.
1.5. Случайное число
Последний эффект "вау" в базовых командах. Также только в консоли.
sl::random(10); // Случайное число от 0 до 10. Вы можете изменить максимальное число. Например...
sl::random(100);
1.6. {Последний стиль форматирования} Тонкий/тусклый текст
Не эффект "вау", но может показаться таким. Вот как создать тусклый текст в Simplelines:
sl::thin("Hello, world!"); // Тусклый текст "Hello, world!" без переноса строки
// ИЛИ
sl::thin("Hello, world!\n"); // Тусклый текст "Hello, world!" с переносом строки
2. Управление курсором
В консольных утилитах это может быть очень полезной функцией, потому что последовательное перемещение курсора не очень удобно. Так что вы можете переместить курсор куда угодно.
// Здесь все команды управления курсором.
sl::returnBeginLine(); // Вернуться в начало строки
sl::borderConsole(); // Переместить курсор на дальний край консоли
sl::clearConsole(); // Очистить консоль
sl::clearLine(); // Очистить текущую строку
sl::hideCur(); // Скрыть курсор консоли
sl::showCur(); // Показать курсор консоли
sl::NullNullCursor(); // Переместить курсор в начало консоли
sl::oneLineDown(); // Переместить курсор на одну строку вниз
sl::oneLineUp(); // Переместить курсор на одну строку вверх
sl::oneSymLeft(); // Переместить курсор на один символ влево
sl::oneSymRight(); // Переместить курсор на один символ вправо
Единственный недостаток — нельзя выбрать, на сколько строк переместиться, например, вверх. Чтобы переместиться больше чем на одну строку, нужно дублировать вызовы функций:
sl::oneLineUp(); // На одну строку вверх
sl::oneLineUp(); // Ещё на одну строку вверх
Результат: две строки вверх. Маловероятно, но если нужно переместиться вверх или вниз более чем на 50 строк, придётся написать 50 строк:
sl::oneLineUp();
sl::oneLineUp();
sl::oneLineUp();
// И ещё 47 строк...
То же самое с другими функциями, но я рекомендую следить за обновлениями. Возможно, в Simplelines добавят что-то вроде:
sl::oneLineUp(10); // Переместиться на 10 строк вверх
Но пока нет. Следите за обновлениями, если хотите, и можете писать улучшения и предложения в комментариях проекта!
3. {Полезная} Задержка между функциями
Да! Это тоже существует! Вместо написания этой мешанины:
std::cout << "Hello!" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "One second has passed!" << std::endl;
...в Simplelines это делается так:
std::cout << "Hello!" << std::endl;
sl::delaySec(1);
std::cout << "One second has passed!" << std::endl;
3.1. Задержка: секунды
Для задержки в секундах:
std::cout << "Hello!" << std::endl;
sl::delaySec(1); // Подождать 1 секунду
std::cout << "One second has passed!" << std::endl;
3.2. Задержка: миллисекунды
Для задержки в миллисекундах:
std::cout << "Hello!" << std::endl;
sl::delayMs(100); // Подождать 100 миллисекунд
std::cout << "One second has passed!" << std::endl;
Небазовые функции: Полный выпуск 1.1
4. ASCII-графика
4.1 Нарисовать кота в ASCII
Чтобы нарисовать кота в ASCII-арте в консоли, введите команду:
sl::drawCAT();
Конец! Ваша консоль может показать вам кота в ASCII =3
4.2 Нарисовать собаку в ASCII
Чтобы нарисовать собаку в ASCII-арте в консоли, введите команду:
sl::drawDOG();
5. Прогресс-бар
Крутая функция в Simplelines 1.1. Вы можете указать максимальный процент,
которого должен достичь прогресс-бар, а затем продолжить программу.
Например, максимальный процент прогресс-бара = 100.
for(int i = 0; i <= 100; i++) { // 100 = сколько процентов
sl::barBAR(i); // i = проценты (в нашем случае - 100)
sl::delayMs(30); // Задержка между символами #
}
Вывод (пример):
[## ] 25%
Но вы можете настроить процент.
Только не используйте отрицательное число
(-1 и меньше), иначе прогресс-бар сойдет с ума. Возможно.
6. Новые задержки: наносекунды, микросекунды, минуты, часы!
Новые задержки для точных вычислений.
Все задержки:
delayNanos(500); // 500 наносекунд
delayMicros(600); // 600 микросекунд
delayMins(1); // 1 минута
delayHours(1); // 1 час (большая задержка!)
7. Быстрый вывод
Быстрый вывод для начинающих, использующих оператор std::cout.
Плюсы:
- Стабильный вывод
- Для начинающих, легко и просто
Минусы:
- Не может отображать переменные (int, float, std::string, char, другие)
- Не поддерживает перенос строки, только через ANSI-код `\n`
Для быстрого вывода введите команду:
fastput("Hello World") // Hello World
8. Создание файла в текущей директории (работа с файлами, используйте осторожно)
Чтобы создать файл любого формата, введите команду:
// Пример, вы можете редактировать имя файла и формат.
sl::objectFile("file.txt"); // создать файл "file.txt"
9. Текст в рамке. ЭКСПЕРИМЕНТАЛЬНО!!!
Чтобы создать рамку с текстом, введите этот код:
sl::textframe("Text in my frame!");
ВАЖНО: Это экспериментальная функция, поэтому производительность может быть неравномерной и непредсказуемой. Спасибо.
Небазовые функции: Полный выпуск 1.2
10. Простые математические функции
Вывод математических результатов
Эти функции выполняют основные арифметические операции и выводят результат прямо в консоль.
// Вывести сумму двух чисел
sl::PrintSum(10, 5); // Вывод: 15
// Вывести разность двух чисел (первое - второе)
sl::PrintDiff(20, 8); // Вывод: 12
// Вывести результат умножения
sl::PrintMulply(6, 7); // Вывод: 42
// Вывести частное (целочисленное деление)
sl::PrintQuo(15, 3); // Вывод: 5
Примечание о PrintQuo(): Функция имеет базовую проверку на очень большие делители. Рекомендуется убедиться, что второй аргумент (
quo2) не равен нулю, чтобы избежать сбоя.
Примечание о PrintNum(): Отображает число с проверкой на очень большие значения.
11. Форматирование текста
bold()
Отображение текста в
полужирном стиле в консоли с использованием ANSI escape-кодов.
sl::bold("Important Message!");
// Вывод: **Important Message!** (в полужирном стиле)
12. Заголовки (H1-H6)
Создание структурированных заголовков с автоматическим отступом для лучшей организации вывода в консоли. Основная функция
header() отображает текст полужирным, а
h2() через
h6() применяют увеличивающийся отступ табуляцией.
sl::header("Main Title"); // Заголовок уровня 1 (полужирный, без отступа)
sl::h2("Chapter 1"); // Заголовок уровня 2 (отступ на 1 табуляцию)
sl::h3("Section 1.1"); // Заголовок уровня 3 (отступ на 2 табуляции)
sl::h4("Subsection"); // Заголовок уровня 4 (отступ на 3 табуляции)
sl::h5("Details"); // Заголовок уровня 5 (отступ на 4 табуляции)
sl::h6("Notes"); // Заголовок уровня 6 (отступ на 5 табуляций)
13. Система ввода
Input()
Гибкая функция для чтения пользовательского ввода с пользовательским приглашением. Работает с различными типами переменных.
int age;
std::string name;
double price;
// Получить ввод разных типов
sl::Input(age, "Enter your age: ");
sl::Input(name, "Enter your name: ");
sl::Input(price, "Enter the price: ");
// Использовать переменные в условиях
if (age >= 18) {
std::cout << "Welcome, " << name << "!\n";
}
Поддерживаемые типы:
int,
double,
float,
std::string,
char и другие базовые типы.
14. Утилиты
crossScreen()
Очистка экрана консоли с кроссплатформенной совместимостью.
sl::crossScreen(); // Очищает отображение терминала/консоли
log()
Отображение сообщения журнала с подробной меткой времени.
sl::log("Application started successfully");
sl::log("Processing completed without errors");
Формат вывода:
[YYYY-MM-DD HH:MM:SS] Your message here
logError()
Отображение сообщения об ошибке с цветной меткой времени для лёгкого определения.
sl::logError("File could not be opened");
sl::logError("Invalid input received from user");
Формат вывода:
[HH:MM:SS] [ERROR] Your error message here (красным цветом)
15. Взаимодействие с системой
dir()
Вывод содержимого каталога. По умолчанию показывает текущий каталог.
sl::dir(); // Список текущего каталога
sl::dir("/home/user"); // Список определённого каталога
sl::dir(".."); // Список родительского каталога
Важное примечание о безопасности: Эта функция выполняет базовую проверку вводимого пути. Всегда убеждайтесь, что путь поступает из доверенного источника.
16. Отображение списка
list()
Отображение форматированного нумерованного списка элементов в консоли.
// Простой список из 3 элементов
sl::list({"First task", "Second task", "Third task"});
// Пример списка покупок
sl::list({"Apples", "Bread", "Milk", "Cheese", "Eggs"});
// Список концепций программирования
sl::list({"Variables", "Functions", "Classes", "Templates"});
Вывод (для списка из 3 элементов):
1. First task
2. Second task
3. Third task
Общие примечания для версии 1.2
-
Обработка ошибок: Большинство функций включают базовую проверку ошибок и будут отображать информативные сообщения.
-
Поддержка платформ: Основная функциональность работает на Linux. Некоторые функции, такие как
crossScreen(), имеют кроссплатформенную поддержку.
-
Проверка ввода: Всегда проверяйте пользовательский ввод, особенно при использовании функций, взаимодействующих с системой.
-
Лучшие практики: Комбинируйте функции журналирования (
log(),
logError()) с новой системой ввода (
Input()), чтобы создавать интерактивные, отлаживаемые консольные приложения.
Обновление с версии 1.1
Все функции из Simplelines 1.1 остаются доступными и полностью совместимыми. Новые функции версии 1.2 расширяют возможности библиотеки для математических операций, структурированного вывода, взаимодействия с пользователем и системных утилит.
Удачного программирования с Simplelines 1.2! 🚀
История
17 января у меня возникла идея создания библиотеки, которая упрощает код для программистов, так как это лучше, чем писать десятки строк кода. Именно в этот день я выпустил тестовый прототип, который не был и не будет выпущен онлайн: Simplelines 1.0 Experimental Developer Release.
Версия 1.0 была выпущена 20 января, и она уже включала множество функций, от форматирования текста и управления курсором консоли до табуляции и задержек между функциями. По правде говоря, она не была написана с нуля. Это копия экспериментальной закрытой версии, но с добавленными и улучшенными функциями.
Пока библиотека активно разрабатывалась, но не выпускалась сразу, версия 1.1 была выпущена 24 января, через четыре дня, добавив огромное количество функций. Это крупное обновление, так как библиотека предложила многое:
- ASCII-арт в консоли: кот и собака с разными версиями рисунков;
- Задержки между функциями (новые): минуты, часы, наносекунды, микросекунды;
- Быстрый вывод без утечек памяти, ограниченная функциональность;
- Экспериментальная функция: Текст в рамке;
- Прогресс-бар, настраиваемый с помощью цикла "for".
Ещё одно крупное обновление, 1.2, запланировано на 29 января, включающее математические функции и создание заголовков и подзаголовков уровней 1-6 (основанных на табуляции, а не размере), а также списки.