Подробности документации advancedLua

This commit is contained in:
igor 2018-01-10 19:13:45 +03:00
parent 006bed7825
commit f6627c5499

View File

@ -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
======