diff --git a/Documentation/advancedLua.md b/Documentation/advancedLua.md index 13765c7f..bb578afb 100644 --- a/Documentation/advancedLua.md +++ b/Documentation/advancedLua.md @@ -27,18 +27,18 @@ AdvancedLua - библиотека, дополняющая стандартны **getCurrentScript**( ): *string* path ----------------------------------------------------------- -Функция возвращает путь к текущему исполняемому скрипту. К примеру, если запустить файл /Test/Main.lua с содержимым +Функция возвращает путь к текущему исполняемому скрипту. Для примера запустим файл **/Test/Main.lua** со следующим содержимым: ```lua print("Путь к текущему скрипту: " .. getCurrentScript()) ``` -То в результате на экране будет отображена следующая строка: +В результате на экране будет отображен тот самый путь: ```lua Путь к текущему скрипту: /Test/Main.lua ``` -**enum**( ... ): *table* associativeResult +**enum**( ... ): *table* result ----------------------------------------------------------- Функция принимает строковые аргументы и возвращает таблицу с этими аргументами в виде ключей, а также с их порядковым номером в виде значений. Данная функция создана для удобства, когда нет желания вручную изменять значения полей на нужные: @@ -64,17 +64,17 @@ local alignment = enum( Дополнения библиотеки table ====== -table.**serialize**( tableToSerialize, [ pretty, indentationWidth, indentUsingTabs, recursionStackLimit ] ): *string* result +table.**serialize**( t, [ pretty, indentationWidth, indentUsingTabs, recursionStackLimit ] ): *string* result ----------------------------------------------------------- | Тип | Аргумент | Описание | | ------ | ------ | ------ | -| *table* | tableToSerialize | Таблица, которую необходимо сериализовать | +| *table* | t | Таблица, которую необходимо сериализовать | | *boolean* | pretty | Опциональный аргумент, сериализующий таблицу для наилучшего визуального восприятия человеком. По умолчанию имеет значение false | | *int* | indentationWidth | Опциональный аргумент, отвечающий за ширину отступа в символах при сериализации в режиме **pretty** | | *boolean* | indentUsingTabs | Опциональный аргумент, отвечающий за выбор символа отступа при сериализации в режиме **pretty**. По умолчанию имеет значение false | | *int* | recursionStackLimit | Опциональный аргумент, отвечающий за ограничение стека рекурсии при сериализации таблиц большого размера | -Метод изначально создан в качестве быстрой альтернативы /lib/serialization.lua, поставляемой OpenOS. Он преобразует содержимое таблицы в строку и крайне удобен для сохранения конфигов различного ПО в понятном для человека виде с сохранением исходной структуры таблицы. Для примера рассмотрим следующий код: +Метод изначально создавался в качестве быстрой альтернативы **/lib/serialization.lua**, поставляемой OpenOS. Он преобразует содержимое таблицы в строку и крайне удобен для сохранения конфигов различного ПО в понятном для человека виде с сохранением исходной структуры таблицы. Для примера рассмотрим следующий код: ```lua local myTable = { @@ -92,7 +92,7 @@ print(" ") print("Красивая сериализация: " .. table.serialize(myTable, true)) ``` -В результате выполнения скрипта на экране отобразится следующее: +В результате выполнения скрипта на экране будет отображена сериализованная структура таблицы : ```lua Обычная сериализация: {[1]="Hello",[2]="world",["abc"]=123,["def"]="456",["ghi"]={["jkl"]=true}} @@ -116,13 +116,13 @@ table.**unserialize**( text ): *table or nil* result, *string* reason | ------ | ------ | ------ | | *string* | text | Строка, созданная методом table.**serialize**() | -Метод пытается десериализовать строковое представление lua-таблицы и вернуть результат. Если это невозможно, то возвращается nil и строка с причиной синтаксической ошибки. Для примера выполним следующий код: +Метод пытается десериализовать строковое представление lua-таблицы и вернуть результат. Если это невозможно, то возвращается nil и строка с причиной синтаксической ошибки. Для примера выполним простейшую десериализацию: ```lua local result = table.unserialize("{ abc = 123 }") ``` -В результате таблица result будет иметь следующее содержимое: +В результате таблица result будет иметь следующий вид: ```lua { @@ -145,7 +145,7 @@ table.**fromFile**( path ): *string* result | ------ | ------ | ------ | | *string* | path | Путь к файлу, содержимое которого необходимо десериализовать | -Метод аналогичен table.**unserialize**(...), однако строковое содержимое он читает напрямую из существующего файла, возвращая десериализованный результат. Опять же, по большей части он применяется для удобного сохранения конфигов ПО. +Метод аналогичен table.**unserialize**(...), однако строковое содержимое он читает напрямую из существующего файла, возвращая десериализованный результат. Опять же, по большей части он применяется для удобной загрузки конфигов ПО. table.**size**( t ): *int* result ----------------------------------------------------------- @@ -153,7 +153,7 @@ table.**size**( t ): *int* result | ------ | ------ | ------ | | *table* | t | Таблица, число ключей которой необходимо вычислить | -Метод возвращает число ключей переданной таблицы. Отличается от варианта #t тем, что подсчитывает также ненумерические индексы +Метод возвращает число ключей переданной таблицы. Отличается от варианта **#t** тем, что подсчитывает также ненумерические индексы table.**contains**( t, object ): *boolean* result ----------------------------------------------------------- @@ -179,7 +179,7 @@ table.**copy**( t ): *table* result | ------ | ------ | ------ | | *table* | t | Таблица, которую необходимо сдублирвать | -Метод рекурсивно копирует содержимое таблицы t в новую и возвращает результат. Обращаю внимание на то, что таблицы, ссылающиеся сами на себя, не поддерживаются (ограничение рекурсии по аналогии с table.**serialize**() пилить было оч оч лень, прости <3) +Метод рекурсивно копирует содержимое таблицы t в новую и возвращает результат. Обращаю внимание на то, что таблицы, ссылающиеся сами на себя, не поддерживаются (ограничение стека рекурсии по аналогии с table.**serialize**() пилить было оч оч лень, прости <3) Дополнения библиотеки string ====== @@ -213,10 +213,40 @@ string.**wrap**( s, wrapWidth ): *table* result ----------------------------------------------------------- | Тип | Аргумент | Описание | | ------ | ------ | ------ | -| *string/string[]* | s | Строка либо массив строк, которые необходимо перенести по указанной ширине | -| *int* | wrapWidth | Максимальная ширина строки, на которую следует ориентироваться при переносе | +| *string/string[]* | s | Строка либо массив строк, которые необходимо перенести по указанной длине | +| *int* | wrapWidth | Максимальная длина строки, на которую следует ориентироваться при переносе | + +Метод осуществляет перенос строки с указанным ограничением по длине и возвращает результат в виде таблицы. Если размер отдельно взятого слова превышает указанную длину, то слово будет "разрезано" на составляющие части. + +Также поддерживаются символы **\n** для автоматического переноса каретки на новую строку. Для примера рассмотрим код: + +```lua +local limit = 20 +local text = "Привет, как дела? Сегодня отличный денек для выгула твоей вонючей псины, не так ли, Сэм?\n\nАх, ты уже не тот Сэм, с которым Фродо расплавил кольцо Саурона в самом сердце Роковой Горы" +local lines = string.wrap(text, limit) + +print(string.rep("-", limit)) +for i = 1, #lines do + print(lines[i]) +end +``` +В результате на экране будет отображен текст: + +```lua +-------------------- +Привет, как дела? +Сегодня отличный +денек для выгула +твоей вонючей псины, +не так ли, Сэм? + +Ах, ты уже не тот +Сэм, с которым Фродо +расплавил кольцо +Саурона в самом +сердце Роковой Горы +``` -Метод осуществляет перенос строк по указанной ширине, возвращая таблицу с результатом. Если размер отдельно взятого слова превышает указанную ширину, то слово будет "разрезано" на составляющие части string.**unicodeFind**( ... ): ... ----------------------------------------------------------- @@ -224,7 +254,7 @@ string.**unicodeFind**( ... ): ... | ------ | ------ | ------ | | - | ... | Множество аргументов, аналогичных таковым для функции string.**find**(...) | -Метод аналогичен string.**find*(...), однако позволяет работать с юникодом. Незаменимая штука для русскоговорящей аудитории! +Метод аналогичен string.**find**(...), однако позволяет работать с юникодом. Незаменимая штука для русскоговорящей аудитории! Дополнения библиотеки math ======