- 1,617
- 1,395
Ну как и обещал, запоздал пост конечно, ну ладно.Если надо, то могу написать в теме отдельный пост о создании своей документации.
Основы
Начну издалека, документации создаются в папке xcode/docs/luaИ пока что, они только для языка Lua (може-е-е-т быть, добавлю в будущих версиях и другие языки).
Документация является файлом формата json.
В документации есть два главных файла это index.json и %вставьте_название_языка%.json (В нашем случае - lua.json)
index.json - индексирует корневой файл (lua.json) и аддоны (Расширение документации).
index.json не может находиться в какой-либо папке.
lua.json
Корневой файл имеет такой вид:
JSON:
{
"name": "Lua", // Имя языка
"comment-start": "--[[", // Начало multi-line комментария (в Lua забаговано, в других языках ХЗ.)
"comment-end": "]]", // Конец multi-line комментария
"single-line-comment": "--", // Однострочный комментарий
"auto-indentation": true, // Авто-табуляция (true - включена / false - выключена.)
"case-sensitive": true, // Регистрозависимость
"keywords": [ // Ключевые слова в языке.
"and",
"break",
"do",
"else",
"elseif",
"end",
"false",
"for",
"function",
"if",
"in",
"local",
"nil",
"not",
"or",
"repeat",
"return",
"then",
"true",
"until",
"while"
]
// Также тут должны быть ещё два поля: regex и identifiers
// regex убран в угоду собственного токенайзера, однако как поле вы его всё равно можете добавить
// но, он не будет парситься.
// identifiers расфасован по аддонам
"regex": {
"string": ["some regex", "some regex2"], // Регулярные выражения для строк
"number": ["some regex"], // Для чисел
"identifier": ["some regex"], // Для идентификаторов
"punctuation": ["some regex228"] // Для пунктуации (например, .,:[]{}%+*-/=<>~ )
} // На деле, регулярных выражений может быть больше, но в коде парсятся только эти 4.
// Как оформляются identifiers рассмотрим позже.
}
index.json
index.json имеет такой вид:
JSON:
{
"root": "lua.json", // Корневой файл может быть в любой папке...
// Главное указать что он в находится именно в папке.
"addons": [ // Список расширений (аддонов)
/*
Расширения могут находиться в папках, главное это указать.
Расширения указываются через запятую.
Расширений может быть сколько угодно.
*/
"lua/basic.json",
"lua/coroutine.json",
"lua/module.json",
"lua/string.json",
"lua/table.json",
"lua/math.json",
"lua/io.json",
"lua/os.json",
"lua/debug.json",
// Последнее расширение в списке не должно содержать запятой после себя.
"moonloader/moonloader.json", // Содержит запятую, так как предпоследнее.
"moonloader/snippets.json" // Не содержит запятую после себя, так как последнее.
]
}
Оформление расширения и идентификатора
Типичное расширение имеет такой вид:
JSON:
{
// Массивы в JSON указываются в квадратных скобках,
// Объекты в фигурных.
"identifiers": [
{
"id": "print", // Название идентификатора, print взят чисто для примера
"description": [ // Описание идентификатора, может указываться как одной строкой,
// так и массивом
"1337",
"228"
],
"signature": "print (...)" // Общий вид функции, т.е что она возвращает, какие аргументы принимает и т.д
"snippet": "local result = print(\"1488\")" // Сниппет идентификатора, может указываться как одной строкой,
// так и массивом.
// Более подробно можно посмотреть в moonloader/snippets.json
},
{
// Новый идентификатор, оформляется точно также, как и пример сверху.
// Однако, поля "description", "signature", "snippet" не обязательны.
// Если поля "id" не будет, парсер пропустит этот идентификатор.
}
]
}
Создание документации перенесу в следующий пост.