1636
правок
Denis.s (обсуждение | вклад) |
Denis.s (обсуждение | вклад) Нет описания правки |
||
Строка 2: | Строка 2: | ||
== Принципы == | == Принципы == | ||
* Основной элемент формата - это объект с параметрами. | * Основной элемент формата - это объект с параметрами. В терминологии Tabtree объекты называются ''айтем (item)'' | ||
* Один | * Один айтем - одна строка (см. также про Multiline Tabtree ниже). | ||
* Части | * Части айтема записываются через символ пробела | ||
item_id parameter1:value1 parameter2:value2 | |||
* | * Айтем уникально определяется первым словом (идентификатор). Идентификатор элемента может содержать любые символы, за исключением пробельных. | ||
* Параметры | * Параметры айтема указываются парами ключ:значение. Каждая пара является отдельным словом и отделяется от соседних пар и идентификатора одиночным пробелом. | ||
* | * Айтемы состоят в мерархических отношениях с друг другом. Иерархия задается знаками табуляции в начале строки перед идентификатором и парами ключ-значение. Уровень иерархии равен числу табуляций (ниже табуляция показывается знаком `→`) | ||
Россия type:страна capital:Москва | Россия type:страна capital:Москва | ||
→Ростов-на-Дону type:city | →Ростов-на-Дону type:city | ||
Строка 17: | Строка 17: | ||
→Oslo type:city | →Oslo type:city | ||
→→Grønland type:neighbourhood | →→Grønland type:neighbourhood | ||
* Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа | * Если идентификатор состоит из нескольких слов, то знак пробела между ними заменяется на знак подчеркикания `_`. Если имя ключа состоит из нескольких слов, то обычно пробел между ними заменяется на дефис `-` | ||
* Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". | * Если значение ключа - просто текст, то он дается как есть, с символами пробела и обрамляется двойными кавычками "". | ||
* Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками `` | * Если значение ключа - код, то он дается со всеми пробелами, но обрамляется обратными одинарными кавычками `` | ||
* Все, что идет за знаком точка с запятой ; - считается комментарием (как в Racket) | * Все, что идет за знаком точка с запятой ; - считается комментарием (как в Racket) | ||
== | == Наследование параметров == | ||
Если в объекте имя параметра предваряет символ +, то этот параметр со своим значением наследуется всеми объектами, лежащими по иерархии ниже данного объекта. Значение параметра в одном из нижележащих объектов может переписаться, если такое же имя параметра с новым значением будет добавлено непосредственно в строку этого объекта. | |||
ш | |||
== Multiline Tabtree == | |||
Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор объкта, без параметров) | Когда у объектов много параметров (больше примерно 10), записывать их в одну строку становится неудобно. Для этого случая существует модификация формата TabTree - Multiline Tabtree. В ней объекты разделяются знаками . и <.> (просто точка - если голый идентификатор объкта, без параметров) | ||
Россия. | Россия. | ||
Строка 32: | Строка 36: | ||
status:сгорела | status:сгорела | ||
<.> | <.> | ||
== Файловое расширение == | |||
* Для Tabtree - <code>.tree</code> | |||
* Для Multiline Tabtree - <code>.mtree</code> | |||
== Пример == | == Пример == |