Skip to content
Oleg Grigoriev edited this page Jan 16, 2014 · 2 revisions

Описание языка разметки axyML

axyML предназначен для написания на своём сайте различных текстов: статей, документации, wiki и т.п. Текст, написанный на axyML, транслируется в HTML.

axyML-разметка позволяет упростить основные рутинные операции по вёрстке текста.

В то же время подразумевается, что текст пишет автор на своём сайте. В отличии, например, от BB-кодов на каком-нибудь форуме, где следует всегда следить, чтобы стороние люди не вставил чего-нибудь плохого. Отсюда следует, что:

  • Автор сохраняет возможность в любой момент вставить произвольный HTML.
  • Автор сохраняет контроль над отображением любых элементов.
  • Автор несёт ответственность за итоговый HTML. Транслятор не следит за правильно закрытыми тегами и всем остальным.

Пример текста

Простой текст на axyML:

# Заголовок текста

Это первое предложение абзаца.
А это второе.

А это уже следующий абзац.

## Подзаголовок

Какой-то [b]жирный текст[/b] во вложенном разделе.

Итоговый HTML:

<h1>Заголовок текста</h1>

<p>Это первое предложение абзаца.
А это второе.</p>

<p>А это уже следующий абзац.</p>

<h2>Подзаголовок</h2>

<p>Какой-то <b>жирный текст</b> во вложенном разделе.</p>

Формат текста

Текст должен находиться в кодировке UTF-8 (без BOM).

Поддерживаются различные переводы строк (unix, windows, mac), но при выводе все они конвертируются в один (по умолчанию \n, можно изменить).

Символы табуляции приводятся к 4-м пробелам (количество пробелов можно настроить).

Абзацы

Весь текст вне заголовков объединяется в абзацы. Абзацы разделяются пустыми строками.

Внутри текста в абзаце могут быть использованы специальные теги, похожие на bb-теги (см. ниже).

Переносы строк внутри абзаца никак не обрабатываются. То есть при выводе HTML в браузер переносов нет.

Весь текст вне bb-тегов по умолчанию экранируется, то есть в браузер выводится как есть.

axyML и то, что видно в браузере:

Если x < 10, то y > 15.

HTML:

Если x &lt; 10, то y &gt; 15.

На обработку текста могут быть повешены дополнительные обработчики. Например, простые кавычки могут заменяться на ёлочки и происходить другие чудеса для гурманов.

Более подробно про абзацы см. здесь.

Заголовки

Заголовки располагаются на отдельных строках и начинаются с определённого количества знаков #. Количество знаков, соответствует уровню вложенности:

# Заголовок 1

## Заголовок 2

### Заголовок 3
...

axyML не лимитирует максимальный уровень заголовка.

По умолчанию, # - <h1>, ## - <h2> и так далее. Всё, начиная с 6-го уровня: <h6>.

Однако, вывод может настраиваться в трансляторе. Например, если идёт список статей, то начинать следует, видимо, с <h2>.

Заголовки с именами

#[main] Заголовок 1

...

##[cut] Заголовок 2

...

Каждому заголовку можно присвоить имя. Имя должно идти сразу после начальных решёток внутри квадратных скобок.

При выводе оно никак не отображается, но может быть использовано отображающей системой различными способами. Например:

  • Стать якорем для возможность поставить ссылку на раздел.
  • Быть пометкой, где следует отделить краткий текст от полного.

Якоря

Заголовок с именем, но без самого заголовка.

Краткий текст.
Нажмите "подробнее", чтобы перейти на полную статью.

#[cut]

Полный текст.

Может быть использован системой также, как и заголовок с именем, но никак не отображается.

Мета-данные

Мета данные представляют собой некие значения, которые можно привязать к тексту. Они никак не отображаются и с точки зрения axyML не имеют никакого смысла, но могут быть использованы отображающей системой.

# Заголовок

#= tags: php, javascript, mysql
#= url: super-article
#= short-title: title

Пошёл текст статьи.

Здесь для статьи указываются теги, адрес и краткий заголовок.

Мета-данные располагаются на отдельных строках и начинаются с #=. Имя данного отделяется от значения двоеточием :. Значение не обязательно.

Комментарии

Комментарии располагаются на отдельных строках и начинаются с #*.

# Что такое Юникод

Юникод это круто!
#* Расписать потом по-подробнее

Никого проявления при отрисовке они не имеют.

Пустые строки

Пустые строки имеют только одну функцию - отделение абзацев друг от друга.

Пример:

# Заголовок

Текст одного абзаца.

Текст второго абзаца.


## Подзаголовок

Текст третьего абзаца.

Здесь функциональное значение имеет только пустая строка между первым и вторым абзацем. Все остальные использованы только для форматирования исходного текста.

Несколько пустых строк подряд считаются за одну.

Строка содержащая одни пробелы считается пустой.

Списки

* Это первая строка списка
* Это вторая
** А это начался вложенный список
** И он продолжается
* А теперь снова список первого уровня

Теги

Форматирование текста, вставка HTML и подобное задаётся axyML-тегами. Например, [B]жирный текст[/B].