4.4 KiB
Файловая система и сериализация
Библиотека file
См. библиотека file
Библиотека json
Библиотека содержит функции для сериализации и десериализации таблиц:
json.tostring(object: table, human_readable: bool=false) -> str
Сериализует объект в JSON строку. При значении второго параметра true будет использовано многострочное форматирование, удобное для чтения человеком, а не компактное, использующееся по-умолчанию.
json.parse(code: str) -> table
Парсит JSON строку в таблицу.
Библиотека toml
Библиотека содержит функции для сериализации и десериализации таблиц:
toml.tostring(object: table) -> str
Сериализует объект в TOML строку.
toml.parse(code: str) -> table
Парсит TOML строку в таблицу.
Библиотека yaml
Библиотека содержит функции для сериализации и десериализации таблиц:
yaml.tostring(object: table) -> str
Сериализует объект в YAML строку.
yaml.parse(code: str) -> table
Парсит YAML строку в таблицу.
Библиотека xml
Библиотека содержит функции для сериализации и десериализации XML:
Далее XML как тип данных обозначает Lua-таблицу со следующей структурой:
- Тег элемента доступен по ключу
# - XML-аттрибуты доступны как пары ключ = значение
- Вложенные элементы доступны по индексу
Таблица используется как словарь, так и массив.
Пример:
<panel size='400' color='0' interval='1' context='menu'>
<button onclick='menu.page="worlds"'>@Worlds</button>
</panel>
Эквивалентная Lua-таблица:
{
['#'] = "panel",
size = "400",
color = "0",
interval = "1",
context = "menu",
{
['#'] = "button",
onclick = 'menu.page="worlds"',
{
"@Worlds"
}
}
}
Соответственно, элемент button доступен как элемент_panel[1].
-- Сериализует дерево в формате XML
-- multiline - использовать ли многострочное форматирование
xml.tostring(data: XML, multiline: bool = true) -> str
-- Парсит XML
xml.parse(code: str) -> XML
-- Парсит формат VCD (VoxelCore Declaration), используемый форматами VCM и VCA.
-- root_tag - будет неявно создан корневой элемент с указанным тегом,
-- содержащий все корневые элементы
xml.parse_vcd(code: str, root_tag: str | nil = nil) -> XML
Библиотека bjson
Библиотека содержит функции для работы с двоичным форматом обмена данными vcbjson.
-- Кодирует таблицу в массив байт
bjson.tobytes(
-- кодируемая таблица
value: table,
-- сжатие
[опционально] compression: bool=true
) -> Bytearray
-- Декодирует массив байт в таблицу
bjson.frombytes(bytes: table | Bytearray) -> table
Сохранение данных в мире
При сохранении данных пака в мире следует использовать функцию
pack.data_file(id_пака: str, имя_файла: str) -> str
Функция возвращает путь к файлу данных по типу: world:data/id_пака/имя_файла
и создает недостающие директории в пути.
При использовании путей не соответствующим data/{packid}/... возможна потеря данных при перезаписи мира.