ini
Комментарии
Обозначаются точкой с запятой ;
От точки с запятой до конца строки
Идентификаторы
Могут содержать в себе a-z, A-Z, 0-9, _, ~, -, ., :, $, space
, начинаются с a-z, A-Z, . , $, :
Регистр важен
Секции
Это часть конфига обозначенная идентификатором
Секция обозначается заголовком в квадратных скобках
Пример
[Defaults]
Одна секция заканчивается там где начинается другая секция
Секция не может быть разделена на несколько частей, каждый идентификатор секции может встречаться в конфиге лишь однажды (в рамках одного файла)
Секция может быть пустой (т.е. содержать в себе 0+ опций)
Опции
Опция это пара идентификатор=значение
в какой-либо секции
Пробелы в начале или конце идентификатора или значения нужно экранировать
Пробелы между словами в идентификаторе или значении экранировать не надо
Значение может быть представлено одним или несколькими элементами разделенными запятой ,
или двоеточием :
. Если в значении присутствуют оба разделителя, то будет выбрана запятая (у нее приоритет выше)
Элемент
Элемент это текст стоящий в паре с идентификатором опции
Текст элемента может быть связан с другим элементом (даже в разных секциях)
- Ссылки форматируются так:
${section#option}
- Слинкованные элементы обрабатываются в следующем порядке:
- Сначала вставляется текст указанного элемента
- Обрабатываются спецсимволы и команды из вставленного текста (это может влиять на результат)
- Ссылка не будет обработана как ссылка если перед долларом стоит бэкслэш
\
Типы данных
Элемент может быть определенного типа
-
boolean
-
False
0
f
n
off
no
disabled
-
True
1
t
y
on
yes
enabled
-
False
-
signed и unsigned - 64 битное по умолчанию десятичное число со знаком и без
- Шестнадцатиричное префиксируется -
0x
- Восьмиричное -
0
- Бинарное -
0b
- Шестнадцатиричное префиксируется -
- float - 64 битное с плавающей точкой
- enum - значение из предопределенного сета значений
-
string - может содержать разные символы кроме
,
,:
,;
, они должны быть заэкранированы через\
Примеры
[Section 1]
; comment
Option 1 = value 1 ; option 'Option 1' has value 'value 1'
oPtion 1 = \ value 2\ \ \ ; option 'oPtion 1' has value ' value 2 ', 'oPtion 1' and 'Option 1' are different
[$Section::subsection] ; no subsection, only valid identifier of section
Option 2=value 1:value 2:value 3 ; option 'Option 2' is list of 'value 1', 'value 2' and 'value 3'
Option 3 =value 1, ${Section 1#Option 1} ; option 'Option 3' is list of 'value 1' and 'value 1'
Option 4= v1,${$Section::subsection#Option 3},v2 ; option 'Option 4' is list of 'v1', 'value 1', 'value 1', 'v2'
Option 5= v1, v2:v3 ; option 'Option 5' is list of 'v1' a 'v2:v3'
[Numbers]
num = -1285
num_bin = 0b01101001
num_hex = 0x12ae,0xAc2B
num_oct = 01754
float1 = -124.45667356
float2 = +4.1234565E+45
float3 = 412.34565e45
float4 = -1.1245864E-6
[Other]
bool1 = 1
bool2 = on
bool3=f
No Comments