Сообщение Спецификация языка разметки от 05.09.2014 13:52
Изменено 06.09.2014 18:18 AndrewVK
Спецификация разметки
Стили текста
Жирный
Выделяется символами ** с обеих сторон. При этом слева от открывающей ** должен быть пробел или начало строки, а справа не пробел и не конец строки. Для закрывающей, соответственно, не пробел и не начало строки слева, и пробел или конец строки справа.**слово**
**несколько слов**
1 ** 2
Выходной HTML
<strong>слово</strong>
<strong>несколько слов</strong>
1 * 2
Внутри блока кода вместо одинарного символа * следует использовать двойной **
Курсив
Выделяется символами // с обеих сторон. Правила по обрамлению пробелами соответствуют выделению жирным.//слово//
//несколько слов//
Выходной HTML
<em>слово</em>
<em>несколько слов</em>
Подчеркнутый
__слово__
__несколько слов__
Выходной HTML
<span class='underline'>слово</span>
<span class='underline'>несколько слов</span>
Перечеркнутый
--слово--
--несколько слов--
Выходной HTML
<span class='strikeout'>слово</span>
<span class='strikeout'>несколько слов</span>
Верхний индекс
^^слово^^
^^несколько слов^^
Выходной HTML
<sup>слово</sup>
<sup>несколько слов</sup>
Нижний индекс
___слово___
___несколько слов___
Выходной HTML
<sub>слово</sub>
<sub>несколько слов</sub>
Заголовки
= Уровень 1
== Уровень 2
=== Уровень 3
==== Уровень 4
===== Уровень 5
====== Уровень 6
Выходной HTML
<h1>Уровень 1</h1>
<h2>Уровень 2</h2>
<h3>Уровень 3</h3>
<h4>Уровень 4</h4>
<h5>Уровень 5</h5>
<h6>Уровень 6</h6>
Параграфы
Начало строки — начало параграфа. Одна или несколько пустых строк — конец параграфа. Переносы без пустых строк внутри параграфа полностью игнорируются. Если начало строки и конец предыдущей строки непробельные символы — между ними добавляется пробел. Все пробельные символы в начале и конце параграфа игнорируются.One Two
Three
Four
Five
Выходной HTML
<p class='plain-text'>One Two Three</p>
<p class='plain-text'>Four</p>
<p class='plain-text'>Five</p>
Цитаты сообщений
Строка цитаты имеет следующий формат:* Префикс из символов, цифр и знака подчеркивания, без пробелов, длиной от 0 до 6 символов.
* Произвольное количество символов >. Количество символов определяет уровень вложенности.
* Произвольный текст до конца строки.
A>> O La La
Bb> One Two
Выходной HTML
<span class='quota level2'><span class='quota-prefix'>A>></span>O La La</span>
<span class='quota level1'><span class='quota-prefix'>Bb>></span>O La La</span>
Списки
Ненумерованный список
Элемент списка — строка, начинающаяся с одного или нескольких символов * (в зависимости от уровня вложенности) и следующего за ним пробела.* Item 1
** Item 1.1
* Item 2
* Item 3
Выходной HTML
<ul>
<li>Item 1</li>
<ul>
<li>Item 1.1</li>
</ul>
<li>Item 2</li>
<li>Item 3</li>
</ul>
Нумерованный список
Элемент списка — строка, начинающаяся с символа # или № и следующего за ним пробела№ Item 1
## Item 1.1
№ Item 2
№ Item 3
Выходной HTML
<ol>
<li>Item 1</li>
<ol>
<li>Item 1.1</li>
</ol>
<li>Item 2</li>
<li>Item 3</li>
</ol>
Нумерованные и ненумерованные списки могут быть смешаны между собой на разных уровнях. Нумерованные и ненумерованные списки на одном уровне трактуются как два разных списка.
Ссылки
((текст ссылки|url))
((url))
Текст ссылки может быть пустым. В этом случае в качестве текста используется сам url, но с заменой url escaping на исходный текст.
Выходной HTML
<a href='url'>текст ссылки</a>
<a href='url'>url</a>
Ссылки на сообщения по имени
((текст ссылки|#name))
((#name))
Текст ссылки может быть пустым. В этом случае текст должен предоставить хост. url ссылки формируется по имени хостом.
Выходной HTML
<a class='name-link' href='host-provided-url'>текст ссылки</a>
<a class='name-link' href='host-provided-url'>host-provided-text</a>
Изображения
!((имя изображения|url))
!((url))
+!((имя изображения|url))
имя изображения может быть пустым. В этом случае в качестве текста используется последний сегмент пути url (имя файла). Если впереди стоит знак + — изображение по умолчанию свернуто.
Выходной HTML
<div class='img'>
<div class='title'>имя изображения</div>
<img src='url' alt='имя изображения'/>
</div>
<div class='img'>
<div class='title'>filename.jpg</div>
<img src='url' alt='filename.jpg'/>
</div>
<div class='img collapsible'>
<div class='title'>имя изображения</div>
<img src='url' alt='имя изображения'/>
</div>
Смайлы
Стандартные смайлы
:)
:))
:)))
:(
;)
:-\:???:
Выходной HTML
<i class='emoticon smile'></i>
<i class='emoticon biggrin'></i>
<i class='emoticon lol'></i>
<i class='emoticon frown'></i>
<i class='emoticon wink'></i>
<i class='emoticon smirk'></i>
<i class='emoticon confused'></i>
Смайлы из расширений
Имеют формат :smileid:, где smileid — строка от 1 до 5 символов английского или русского алфавита без пробелов и знаков препинания. Для каждого smileid должны быть два синонима — в русской и английской раскладке.Свернутый блок
Начинается с символов +++ в начале строки и следующего за этими символами названия блока. Завершается строкой из символов +++.+++ Много текста
Текст текст текст текст.
+++
Выходной HTML
<div class='collapsible'>
<div class='title'>Много текста</div>
<div class='content'>
Текст текст текст текст.
</div>
</div>
Код
Внутри кода игнорируется вся разметка, за исключением выделения. Внутри кода так же допускается использование ~{~{~{ и ~}~}~}. Признак конца кода определяется парсером по парности фигурных скобок.Строчный код
Кусок текста, окруженный тройными скобками {{{ и }}} на одной строке. Опционально между второй и третьей открывающей скобкой можно указать название языка.Текст {{ruby{if (x == 0) return;}}} текст
Выходной HTML:
Текст <span class='code'>if (x == 0) return;</span> текст
Блок кода
Кусок текста, окруженный тройными скобками ~{~{~{ и ~}~}~} на отдельных строчках. Опционально между второй и третьей открывающей скобкой можно указать название языка.{{cs{
if (x == 0)
return;
}}} текст
Выходной HTML:
<div class='code'>
<span class='code-keyword'>if</span> (x == <span class='code-num-literal'>0</span>)
<span class='code-keyword'>return</span>;
</div>
Перед открывающими скобками можно указать символ +. Это будет означать, что блок кода будет по умолчанию свернут в строку "Код[[ язык]".
Выделение в коде
Выделить можно либо строку целиком, либо конкретный участок кода. Выделенная строка начинается с символов >>> и следующего на ними пробельного символа. Выделенный участок кода должен быть расположен на одной строке и обрамляется символами >>> и <<< слева и справа. Расположение этих символов относительно слов соответствует правилам для выделения жирным.if (x == 0)
>>> Foo();
else
x = >>>GetX()<<<;
Блочная цитата
Начинается с тройного символа " и им же заканчивается."""
Один классик сказал …
"""
Перед открывающими кавычками можно указать символ +. Это будет означать, что цитата будет по умолчанию свернута в строку "Цитата".
Таблицы
|* Header 1 | Header 2 | Header 3|
| Cell 1.1 | Cell 1.2 | Cell 1.3|
| Cell 2.1 | Cell 2.2 | Cell 2.3|
|Left aligned | Centered | Right aligned|
|>| Colspan |<|
|\|||
|Rowspan|||
Горизонтальный разделитель
Строка, состоящая только из трех символов ---Выходной HTML:
<hr/>
Сообщение модератора или системы
Заключается в скобки из тройных символов !!!Теглайн
Строка, начинающаяся с трех символов @@@, следующиего за ними одного или нескольких пробелов и произвольным текстом далее до конца строки.@@@Janus v1.2.1
Выходной HTML:
<div class='tagline'>Janus v1.2.1</div>
Экранирование
Для экранирования служебного символа можно применять символ экранирования \. Действует только для следующих символов — "\_*+-/!|><@{(:#№". Все остальные комбинации трактуются как просто текст.Автозамены
Некоторые комбинации символов заменяются:* ... (три точки) на … (троеточие)
* --, окруженный пробелами на — (длинное тире)
Объекты
Предназначены для вставки внешних по отношению к форматтеру объектов. Должно присутствовать уникальное имя объекта, а в теле тега значение параметров в JSON формате.TBD
Спецификация разметки
Стили текста
Жирный
Выделяется символами ** с обеих сторон. При этом слева от открывающей ** должен быть пробел или начало строки, а справа не пробел и не конец строки. Для закрывающей, соответственно, не пробел и не начало строки слева, и пробел или конец строки справа.**слово**
**несколько слов**
Выходной HTML
<strong>слово</strong>
<strong>несколько слов</strong>
Курсив
Выделяется символами // с обеих сторон. Правила по обрамлению пробелами соответствуют выделению жирным.//слово//
//несколько слов//
Выходной HTML
<em>слово</em>
<em>несколько слов</em>
Подчеркнутый
__слово__
__несколько слов__
Выходной HTML
<span class='underline'>слово</span>
<span class='underline'>несколько слов</span>
Перечеркнутый
--слово--
--несколько слов--
Выходной HTML
<span class='strikeout'>слово</span>
<span class='strikeout'>несколько слов</span>
Верхний индекс
^^слово^^
^^несколько слов^^
Выходной HTML
<sup>слово</sup>
<sup>несколько слов</sup>
Нижний индекс
___слово___
___несколько слов___
Выходной HTML
<sub>слово</sub>
<sub>несколько слов</sub>
Заголовки
= Уровень 1
== Уровень 2
=== Уровень 3
==== Уровень 4
===== Уровень 5
====== Уровень 6
Выходной HTML
<h1>Уровень 1</h1>
<h2>Уровень 2</h2>
<h3>Уровень 3</h3>
<h4>Уровень 4</h4>
<h5>Уровень 5</h5>
<h6>Уровень 6</h6>
Параграфы
Начало строки — начало параграфа. Одна или несколько пустых строк — конец параграфа. Переносы без пустых строк внутри параграфа полностью игнорируются. Если начало строки и конец предыдущей строки непробельные символы — между ними добавляется пробел. Все пробельные символы в начале и конце параграфа игнорируются.One Two
Three
Four
Five
Выходной HTML
<p class='plain-text'>One Two Three</p>
<p class='plain-text'>Four</p>
<p class='plain-text'>Five</p>
Цитаты сообщений
Строка цитаты имеет следующий формат:* Префикс из символов, цифр и знака подчеркивания, без пробелов, длиной от 0 до 6 символов.
* Произвольное количество символов >. Количество символов определяет уровень вложенности.
* Произвольный текст до конца строки.
A>> O La La
Bb> One Two
Выходной HTML
<span class='quota level2'><span class='quota-prefix'>A>></span>O La La</span>
<span class='quota level1'><span class='quota-prefix'>Bb>></span>O La La</span>
Списки
Ненумерованный список
Элемент списка — строка, начинающаяся с одного или нескольких символов * (в зависимости от уровня вложенности) и следующего за ним пробела.* Item 1
** Item 1.1
* Item 2
* Item 3
Выходной HTML
<ul>
<li>Item 1</li>
<ul>
<li>Item 1.1</li>
</ul>
<li>Item 2</li>
<li>Item 3</li>
</ul>
Нумерованный список
Элемент списка — строка, начинающаяся с символа # или № и следующего за ним пробела№ Item 1
## Item 1.1
№ Item 2
№ Item 3
Выходной HTML
<ol>
<li>Item 1</li>
<ol>
<li>Item 1.1</li>
</ol>
<li>Item 2</li>
<li>Item 3</li>
</ol>
Нумерованные и ненумерованные списки могут быть смешаны между собой на разных уровнях. Нумерованные и ненумерованные списки на одном уровне трактуются как два разных списка.
Ссылки
((текст ссылки|url))
((url))
Текст ссылки может быть пустым. В этом случае в качестве текста используется сам url, но с заменой url escaping на исходный текст.
Выходной HTML
<a href='url'>текст ссылки</a>
<a href='url'>url</a>
Ссылки на сообщения по имени
((текст ссылки|#name))
((#name))
Текст ссылки может быть пустым. В этом случае текст должен предоставить хост. url ссылки формируется по имени хостом.
Выходной HTML
<a class='name-link' href='host-provided-url'>текст ссылки</a>
<a class='name-link' href='host-provided-url'>host-provided-text</a>
Изображения
!((имя изображения|url))
!((url))
+!((имя изображения|url))
имя изображения может быть пустым. В этом случае в качестве текста используется последний сегмент пути url (имя файла). Если впереди стоит знак + — изображение по умолчанию свернуто.
Выходной HTML
<div class='img'>
<div class='title'>имя изображения</div>
<img src='url' alt='имя изображения'/>
</div>
<div class='img'>
<div class='title'>filename.jpg</div>
<img src='url' alt='filename.jpg'/>
</div>
<div class='img collapsible'>
<div class='title'>имя изображения</div>
<img src='url' alt='имя изображения'/>
</div>
Смайлы
Стандартные смайлы
:)
:))
:)))
:(
;)
:-\:???:
Выходной HTML
<i class='emoticon smile'></i>
<i class='emoticon biggrin'></i>
<i class='emoticon lol'></i>
<i class='emoticon frown'></i>
<i class='emoticon wink'></i>
<i class='emoticon smirk'></i>
<i class='emoticon confused'></i>
Смайлы из расширений
Имеют формат :smileid:, где smileid — строка от 1 до 5 символов английского или русского алфавита без пробелов и знаков препинания. Для каждого smileid должны быть два синонима — в русской и английской раскладке.Свернутый блок
Начинается с символов +++ в начале строки и следующего за этими символами названия блока. Завершается строкой из символов +++.+++ Много текста
Текст текст текст текст.
+++
Выходной HTML
<div class='collapsible'>
<div class='title'>Много текста</div>
<div class='content'>
Текст текст текст текст.
</div>
</div>
Код
Внутри кода игнорируется вся разметка, за исключением выделения. Внутри кода так же допускается использование ~{~{~{ и ~}~}~}. Признак конца кода определяется парсером по парности фигурных скобок.Строчный код
Кусок текста, окруженный тройными скобками {{{ и }}} на одной строке. Опционально между второй и третьей открывающей скобкой можно указать название языка.Текст {{ruby{if (x == 0) return;}}} текст
Выходной HTML:
Текст <span class='code'>if (x == 0) return;</span> текст
Блок кода
Кусок текста, окруженный тройными скобками ~{~{~{ и ~}~}~} на отдельных строчках. Опционально между второй и третьей открывающей скобкой можно указать название языка.{{cs{
if (x == 0)
return;
}}} текст
Выходной HTML:
<div class='code'>
<span class='code-keyword'>if</span> (x == <span class='code-num-literal'>0</span>)
<span class='code-keyword'>return</span>;
</div>
Перед открывающими скобками можно указать символ +. Это будет означать, что блок кода будет по умолчанию свернут в строку "Код[[ язык]".
Выделение в коде
Выделить можно либо строку целиком, либо конкретный участок кода. Выделенная строка начинается с символов >>> и следующего на ними пробельного символа. Выделенный участок кода должен быть расположен на одной строке и обрамляется символами >>> и <<< слева и справа. Расположение этих символов относительно слов соответствует правилам для выделения жирным.if (x == 0)
>>> Foo();
else
x = >>>GetX()<<<;
Блочная цитата
Начинается с тройного символа " и им же заканчивается."""
Один классик сказал …
"""
Перед открывающими кавычками можно указать символ +. Это будет означать, что цитата будет по умолчанию свернута в строку "Цитата".
Таблицы
|* Header 1 | Header 2 | Header 3|
| Cell 1.1 | Cell 1.2 | Cell 1.3|
| Cell 2.1 | Cell 2.2 | Cell 2.3|
|Left aligned | Centered | Right aligned|
|>| Colspan |<|
|\|||
|Rowspan|||
Горизонтальный разделитель
Строка, состоящая только из трех символов ---Выходной HTML:
<hr/>
Сообщение модератора или системы
Заключается в скобки из тройных символов !!!Теглайн
Строка, начинающаяся с трех символов @@@, следующиего за ними одного или нескольких пробелов и произвольным текстом далее до конца строки.@@@Janus v1.2.1
Выходной HTML:
<div class='tagline'>Janus v1.2.1</div>
Экранирование
Для экранирования служебного символа можно применять символ экранирования \. Действует только для следующих символов — "\_*+-/!|><@{(:#№". Все остальные комбинации трактуются как просто текст.Автозамены
Некоторые комбинации символов заменяются:* ... (три точки) на … (троеточие)
* --, окруженный пробелами на — (длинное тире)
Объекты
Предназначены для вставки внешних по отношению к форматтеру объектов. Должно присутствовать уникальное имя объекта, а в теле тега значение параметров в JSON формате.TBD