Info
Content

ini

Комментарии

Обозначаются точкой с запятой ;
От точки с запятой до конца строки

Идентификаторы

Могут содержать в себе a-z, A-Z, 0-9, _, ~, -, ., :, $, space, начинаются с a-z, A-Z, . , $, :
Регистр важен

Секции

Это часть конфига обозначенная идентификатором
Секция обозначается заголовком в квадратных скобках
Пример

[Defaults]

Одна секция заканчивается там где начинается другая секция

Секция не может быть разделена на несколько частей, каждый идентификатор секции может встречаться в конфиге лишь однажды (в рамках одного файла)

Секция может быть пустой (т.е. содержать в себе 0+ опций)

Опции

Опция это пара идентификатор=значение в какой-либо секции

Пробелы в начале или конце идентификатора или значения нужно экранировать

Пробелы между словами в идентификаторе или значении экранировать не надо

Значение может быть представлено одним или несколькими элементами разделенными запятой , или двоеточием :. Если в значении присутствуют оба разделителя, то будет выбрана запятая (у нее приоритет выше)

Элемент

Элемент это текст стоящий в паре с идентификатором опции

Текст элемента может быть связан с другим элементом (даже в разных секциях)

  • Ссылки форматируются так: ${section#option}
  • Слинкованные элементы обрабатываются в следующем порядке:
    1. Сначала вставляется текст указанного элемента
    2. Обрабатываются спецсимволы и команды из вставленного текста (это может влиять на результат)
  • Ссылка не будет обработана как ссылка если перед долларом стоит бэкслэш \

Типы данных

Элемент может быть определенного типа

  • boolean
    • False
      • 0
      • f
      • n
      • off
      • no
      • disabled
    • True
      • 1
      • t
      • y
      • on
      • yes
      • enabled
  • 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
Back to top