## 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>>