TOML


Начало работы

Введение

TOML - это минимальный формат конфигурационных файлов, который легко читается благодаря очевидной семантике.

Примеры

``toml bool = true дата = 2006-05-27T07:32:00Z string = “hello” число = 42 float = 3.14 scientificNotation = 1e+12




### Комментарии
``yaml
# Пример однострочного комментария

# пример комментария на уровне блока
# комментарий строки 1
# комментарий строки 2
# комментарий строки 3

Целое число

``toml int1 = +42 int2 = 0 int3 = -21 integerRange = 64



### Float
``toml
float2 = 3.1415
float4 = 5e+22
float7 = 6.626e-34

Булево

``toml bool1 = true bool2 = false boolMustBeLowercase = true



### Datetime
``toml
дата1 = 1989-05-27T07:32:00Z
дата2 = 1989-05-26T15:32:00-07:00
дата3 = 1989-05-27T07:32:00
дата4 = 1989-05-27
время1 = 07:32:00
время2 = 00:32:00.999999

Строка

``toml str1 = “Я - строка.” str2 = “Вы можете "цитировать" меня.” str3 = “Имя\tJos\u00E9\nLoc\tSF.”

См: [Strings](#toml-strings)




### Таблица
``toml
[owner]
name = "Tom Preston-Werner"
дата рождения = 1979-05-27T07:32:00-08:00

См: Таблицы

Массив

``toml array1 = [1, 2, 3] array2 = [“Запятая”, “есть”, “разделитель”] array3 = [8001, 8001, 8002]


### Дружественный массив {.col-span-2}
``toml
array1 = [ [ "Не смешивать", "разные", "типы" ]
array2 = [ [ [ 1.2, 2.4 ], ["все", "строки", """одинаковые""", ''"тип"''] ]
array3 = [
  "Пробел", "есть",
  "игнорируется"
]

Струны TOML

Многострочная строка

``toml multiLineString = """ Многострочные базовые строки окружены тремя кавычками с каждой стороны и допускают новые строки. """



### Буквальная строка
``toml {.wrap}
path = 'C:\Users\nodejs\templates'
path2 = '\\\User\admin$\system32'
quoted = 'Tom "Dubs" Preston-Werner'
regex = '<\i\c*\s*>'

Окружены одинарными кавычками. Эскейпинг не допускается.

Многострочная буквенная строка

``toml re = ‘’’\d{2}приложений много’’’ lines = ’’' Первая новая строка обрезается в необработанных строках. Все остальные пробельные символы сохраняется. ’''





Таблицы TOML
-----
### Базовый
``toml
[name]
foo = 1
bar = 2

foo и bar являются ключами в таблице с именем name.

Вложенные

``toml [table1] foo = “bar”

[table1.nested_table] baz = “bat”





### Array-like {.row-span-2}
``toml
[[комментарии]]
author = "Nate"
text = "Отличная статья!"

[[комментарии]]
автор = "Аноним"
text = "Понравилось!"

↓ Эквивалентный JSON

``json { “comments” : [ { “author” : “Nate”, “text” : “Отличная статья!” }, { “author” : “Anonymous”, “text” : “Очень понравилось!” } ] }



### Разделение точками
```toml
[dog. "tater.man"]
тип = "мопс"

↓ Эквивалентный JSON

``json { “dog”: { “tater.man”: { “type”: “мопс” } } }





### Многовложенные
``toml
[foo.bar.baz]
bat = "hi"

↓ Эквивалентный JSON

``json { “foo” : { “bar” : { “baz” : { “bat” : “hi” } } } }


### Игнорировать пробельные символы
``toml
[a.b.c] # это лучшая практика
[ d.e.f ] # то же, что [d.e.f]
[ g . h .i ] # то же, что [g.h.i]
[ j . "ʞ" .'l' ] # то же, что [j. "ʞ".'l']

Инлайн-таблица

``toml name = { first = “Том”, last = “Престон-Вернер” } точка = { x = 1, y = 2 } животное = { type.name = “мопс” }