## Please edit system and help pages ONLY in the master wiki!
## For more information, please see MoinMoin:MoinDev/Translation.
##master-page:HelpOnParsers
##master-date:2011-01-27T19:37:25Z
#acl -All:write Default
#format wiki
#language ru

= Парсеры =

<<TableOfContents>>

Помимо вики-разметки МойнМойн, используемой по умолчанию, различные  обработчики входных форматов (далее называемые ''парсерами'') позволяют пользователям иметь на вики данные в различных форматах (как в виде отдельных страниц, так и в качестве частей внутри других страниц, если синтаксис этих страниц поддерживает такую возможность).

== Схема работы и использование парсеров ==

Парсеры обрабатывают поток во входном формате и генерируют набор вызовов для генераторов выходного формата («''formatter''») для получения итоговой страницы. Парсер можно использовать одним из двух способов:

 1. '''Указание [[ПомощьПоИнструкциям#format|инструкции #format]]'''

 Инструкция `#format` может использоваться для указания МойнМойн, какой парсер должен использоваться для обработки страницы. По умолчанию это парсер вики-разметки Мойн-Мойн — `wiki`.

 1. '''Блок с указанным парсером''' — см. КакФорматировать

 При использовании блока с указанием парсера, он может применяться только к части страницы. Используемый парсер указывается в параметре блока (в синтаксисе `wiki` — сразу после открывающей конструкции с использованием [[WikiPedia:shebang (Unix)|shebang]], в `creole` — на следующей строке с использованием shebang; shebang используется по аналогии с UNIX, где он используется для указания интерпретатора скриптового файла)

=== Пример: использование инструкции ===

Здесь в качестве примера выступает отдельная страница:
{{{
#format creole
... **полужирное начертание** ...
}}}

=== Пример: блок с указанием парсера ===
В данном примере подразумевается, что это — часть вики-страницы:
 {{{{
{{{#!csv ,
а,б,в
г,д,е
}}}
}}}}

Будет отображно как:
 {{{#!csv ,
а,б,в
г,д,е
}}}

=== Вложние блоков с указанием парсера ===

Существует два способа решения проблемы с вложением блоков:
 * Использовать более трёх фигурных скобок для начала и окончания внешних блоков (при этом, подобные последовательности не должны содержаться внутри блока), например:
 {{{{{
{{{{
{{{
...
}}}
}}}}
}}}}}
 * Использовать 3 фигурных скобки и уникальную строку:
 {{{{
{{{фывапролджэ
{{{
...
}}}
фывапролджэ}}}
}}}}

Для дополнительной информации по разметке см. КакРедактировать.

== Парсеры для написания текста вики-страницы ==

Ряд парсеров предназначен для использования в нормальном тексте страницы (т. е. как документ):
 * `wiki` — стандартный парсер вики-разметки МойнМойн, см. СправочникПоСинтаксису.
 * `creole` — парсер разметки Creole, см. ПомощьПоСинтаксисуCreole.
 * `ReST` (reStructuredText) — см. /ReStructuredText
 * `XML/XSLT/DocBook` — см. ПомощьПоXmlСтраницам 

<<Anchor(csvparser)>>
== Парсер CSV ==

Парсер CSV работает с так называемыми ''разделенными запятыми значениями'', но запятая может быть заменена точкой с запятой.
Первая строка рассматривается, как разделенные названия колонок, которые отобразятся в полужирном начертании; если таблица не должна содержать шапку, то достаточно оставить пустой первую строку.

При указании парсера можно задавать следующие параметры:
 * `delimiter` или `separator`: `delimiter=,` задаёт запятую в качестве разделителя полей. Разделитель можно также указывать первым аргументом, не указывая имени параметра.
 * `quotechar`: `quotechar="` позволяет квотировать значения двойными кавычками.
 * `show`: список столбцов, разделённых запятыми, которые необходимо показывать.
 * `hide`: список столбцов, разделённых запятыми, которые необходимо исключить из выдачи.
 * `autofilter`: список столбцов, разделённых запятыми, по которым необходимо разрешить фильтрацию.
 * `name`: имя набора данных.
 * `link`: список столбцов, имеющих формат `http://example.com/link описание ссылки`, нежели просто текста.
 * `static_cols`, `static_vals`: столбцы (и значения, соответственно), добавляемые к каждой записи.
 * `-N` (where N is a number): спрятать столбец с номером N (полезно в случае, когда заголовки столбцов опущены).

Пример использования парсера (см. <<Action(raw,исходный текст страницы)>> для разметки): фрагмент истории изменений МойнМойн 1.3: 
{{{#!csv , autofilter=Автор
Номер патча,Описание,Автор,Дата
patch-366,make _normalize_text public method,Nir Soffer,2004-11-30 19:11:51 GMT
patch-367,fixed failing test wikiutil: good system page names,Nir Soffer,2004-11-30 19:15:52 GMT
patch-368,Fixed DeprecationWarning in RandomPage.py and an unused import in twistedmoin.py,Alexander Schremmer,2004-11-30 22:58:44 GMT
patch-369,remove duplicate code in formatter.base,Thomas Waldmann,2004-12-01 00:14:21 GMT
patch-370,fixed long int in mig3,Thomas Waldmann,2004-12-01 01:51:50 GMT
patch-371,fixed unicode error on eventlog,Nir Soffer,2004-12-01 14:46:29 GMT
patch-372,fixed util.web.makeQueryString and Page.url,Nir Soffer,2004-12-01 15:48:55 GMT
patch-373,fixed again non ascii http_referer,Nir Soffer,2004-12-01 18:55:28 GMT
patch-374,CSV.py supports different separators now,Alexander Schremmer,2004-12-01 23:46:17 GMT
patch-375,improved searchform behavior on Mozilla/Firefox,Nir Soffer,2004-12-02 04:57:06 GMT
patch-376,More correct script for actions menu init,Nir Soffer,2004-12-02 05:07:58 GMT
}}}

Пример с использованием параметра парсера link:
{{{{
{{{#!csv delimiter=, link=Сервер quotechar="
Тип,Сервер
вики,http://moinmo.in MoinMoin
перевод,http://master19.moinmo.in master19
}}}
}}}}

Будет показан на странице следующим образом:
{{{#!csv delimiter=, link=Сервер quotechar="
Тип,Сервер
вики,http://moinmo.in MoinMoin
перевод,http://master19.moinmo.in master19
}}}

== Парсеры diff, cplusplus, python, java, pascal, irc/irssi parsers ==

Данные парсеры присутствовали в МойнМойн версий старше 1.9 и были реализованы посредством специфичной для МойнМойн реализации парсинга и подсвети синтаксиса.

Начиная с версии 1.9 данные парсеры являются сокращениями для соответствующих лексеров парсера highlight.

<<Anchor(The_highlight_parser)>>
== Парсер highlight ==

В состав МойнМойн входит специальный парсер, называемый `highlight` и использующий [[http://pygments.org/|Pygments]] для разбора различных синтаксисов.

При помощи него можно выполнять подсветку кода для различных языков программирования, конфигурационных файлов и других видов используемых текстовых форматов (достаточно указать соответствующее значение имеющееся в столбце «<<GetText(Lexer names)>>» из таблицы ниже).

=== Аргументы ===

Поддерживаемые параметры подсветки синтаксиса:
 numbers:: Добавлять нумерацию строк. по умолчанию — 'on' (добавлять и отображать). Допустимые значение: 'on', 'off' (нумерация не отображается, но возможность её показать сохраняется), 'disable' (возможность нумерации отключается).
 start:: номер первой строки. по умолчанию 1.
 step:: шаг нумерации. по умолчанию 1.

Пример использования:
{{{{
{{{#!highlight python start=127 step=3 numbers=off
class FooBar:
   """ doc string """
}}}
}}}}

Отображение:
{{{#!highlight python start=127 step=3 numbers=off
class FooBar:
   """ doc string """
}}}

(!) Также можно использовать данный парсер и в инструкции `format`, например: `#format highlight python`


=== Список доступных лексеров highlight ===

В качестве аргумента парсера `highlight` можно использовать значения из столбца «<<GetText(Lexer names)>>».

<<HighlighterList>>
