Парсеры
Содержание
Помимо вики-разметки МойнМойн, используемой по умолчанию, различные обработчики входных форматов (далее называемые парсерами) позволяют пользователям иметь на вики данные в различных форматах (как в виде отдельных страниц, так и в качестве частей внутри других страниц, если синтаксис этих страниц поддерживает такую возможность).
Схема работы и использование парсеров
Парсеры обрабатывают поток во входном формате и генерируют набор вызовов для генераторов выходного формата («formatter») для получения итоговой страницы. Парсер можно использовать одним из двух способов:
Указание инструкции #format
Инструкция #format может использоваться для указания МойнМойн, какой парсер должен использоваться для обработки страницы. По умолчанию это парсер вики-разметки Мойн-Мойн — wiki.
Блок с указанным парсером — см. КакФорматировать
При использовании блока с указанием парсера, он может применяться только к части страницы. Используемый парсер указывается в параметре блока (в синтаксисе wiki — сразу после открывающей конструкции с использованием shebang, в creole — на следующей строке с использованием shebang; shebang используется по аналогии с UNIX, где он используется для указания интерпретатора скриптового файла)
Пример: использование инструкции
Здесь в качестве примера выступает отдельная страница:
#format creole ... **полужирное начертание** ...
Пример: блок с указанием парсера
В данном примере подразумевается, что это — часть вики-страницы:
{{{#!csv , а,б,в г,д,е }}}
Будет отображно как:
Вложние блоков с указанием парсера
Существует два способа решения проблемы с вложением блоков:
- Использовать более трёх фигурных скобок для начала и окончания внешних блоков (при этом, подобные последовательности не должны содержаться внутри блока), например:
{{{{ {{{ ... }}} }}}} - Использовать 3 фигурных скобки и уникальную строку:
{{{фывапролджэ {{{ ... }}} фывапролджэ}}}
Для дополнительной информации по разметке см. КакРедактировать.
Парсеры для написания текста вики-страницы
Ряд парсеров предназначен для использования в нормальном тексте страницы (т. е. как документ):
wiki — стандартный парсер вики-разметки МойнМойн, см. СправочникПоСинтаксису.
creole — парсер разметки Creole, см. ПомощьПоСинтаксисуCreole.
ReST (reStructuredText) — см. /ReStructuredText
XML/XSLT/DocBook — см. ПомощьПоXmlСтраницам
Парсер 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 (полезно в случае, когда заголовки столбцов опущены).
Пример использования парсера (см. исходный текст страницы для разметки): фрагмент истории изменений МойнМойн 1.3:
Пример с использованием параметра парсера link:
{{{#!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.
Парсер highlight
В состав МойнМойн входит специальный парсер, называемый highlight и использующий Pygments для разбора различных синтаксисов.
При помощи него можно выполнять подсветку кода для различных языков программирования, конфигурационных файлов и других видов используемых текстовых форматов (достаточно указать соответствующее значение имеющееся в столбце «Имя лексера» из таблицы ниже).
Аргументы
Поддерживаемые параметры подсветки синтаксиса:
- numbers
- Добавлять нумерацию строк. по умолчанию — 'on' (добавлять и отображать). Допустимые значение: 'on', 'off' (нумерация не отображается, но возможность её показать сохраняется), 'disable' (возможность нумерации отключается).
- start
- номер первой строки. по умолчанию 1.
- step
- шаг нумерации. по умолчанию 1.
Пример использования:
{{{#!highlight python start=127 step=3 numbers=off
class FooBar:
""" doc string """
}}}Отображение:
class FooBar:
""" doc string """
Также можно использовать данный парсер и в инструкции format, например: #format highlight python
Список доступных лексеров highlight
В качестве аргумента парсера highlight можно использовать значения из столбца «Имя лексера».
| Описание лексера | Имя лексера | Типы файла | MIME-типы |
| ABAP | abap | *.abap | text/x-abap |
| ActionScript | as, actionscript | *.as | application/x-actionscript, text/x-actionscript, text/actionscript |
| ActionScript 3 | as3, actionscript3 | *.as | application/x-actionscript, text/x-actionscript, text/actionscript |
| Ada | ada, ada95ada2005 | *.adb, *.ads, *.ada | text/x-ada |
| ANTLR | antlr | ||
| ANTLR With ActionScript Target | antlr-as, antlr-actionscript | *.G, *.g | |
| ANTLR With C# Target | antlr-csharp, antlr-c# | *.G, *.g | |
| ANTLR With CPP Target | antlr-cpp | *.G, *.g | |
| ANTLR With Java Target | antlr-java | *.G, *.g | |
| ANTLR With ObjectiveC Target | antlr-objc | *.G, *.g | |
| ANTLR With Perl Target | antlr-perl | *.G, *.g | |
| ANTLR With Python Target | antlr-python | *.G, *.g | |
| ANTLR With Ruby Target | antlr-ruby, antlr-rb | *.G, *.g | |
| ApacheConf | apacheconf, aconf, apache | .htaccess, apache.conf, apache2.conf | text/x-apacheconf |
| AppleScript | applescript | *.applescript | |
| aspx-cs | aspx-cs | *.aspx, *.asax, *.ascx, *.ashx, *.asmx, *.axd | |
| aspx-vb | aspx-vb | *.aspx, *.asax, *.ascx, *.ashx, *.asmx, *.axd | |
| Asymptote | asy, asymptote | *.asy | text/x-asymptote |
| autohotkey | ahk | *.ahk, *.ahkl | text/x-autohotkey |
| Bash | bash, sh, ksh | *.sh, *.ksh, *.bash, *.ebuild, *.eclass | application/x-sh, application/x-shellscript |
| Bash Session | console | *.sh-session | application/x-shell-session |
| Batchfile | bat | *.bat, *.cmd | application/x-dos-batch |
| BBCode | bbcode | text/x-bbcode | |
| Befunge | befunge | *.befunge | application/x-befunge |
| BlitzMax | blitzmax, bmax | *.bmx | text/x-bmx |
| Boo | boo | *.boo | text/x-boo |
| Brainfuck | brainfuck, bf | *.bf, *.b | application/x-brainfuck |
| C | c | *.c, *.h | text/x-chdr, text/x-csrc |
| C# | csharp, c# | *.cs | text/x-csharp |
| C++ | cpp, c++ | *.cpp, *.hpp, *.c++, *.h++, *.cc, *.hh, *.cxx, *.hxx | text/x-c++hdr, text/x-c++src |
| c-objdump | c-objdump | *.c-objdump | text/x-c-objdump |
| cfstatement | cfs | ||
| Cheetah | cheetah, spitfire | *.tmpl, *.spt | application/x-cheetah, application/x-spitfire |
| Clojure | clojure, clj | *.clj | text/x-clojure, application/x-clojure |
| CMake | cmake | *.cmake, CMakeLists.txt | text/x-cmake |
| CoffeeScript | coffee-script, coffeescript | *.coffee | text/coffeescript |
| Coldfusion HTML | cfm | *.cfm, *.cfml, *.cfc | application/x-coldfusion |
| Common Lisp | common-lisp, cl | *.cl, *.lisp, *.el | text/x-common-lisp |
| cpp-objdump | cpp-objdump, c++-objdumb, cxx-objdump | *.cpp-objdump, *.c++-objdump, *.cxx-objdump | text/x-cpp-objdump |
| CSS | css | *.css | text/css |
| CSS+Django/Jinja | css+django, css+jinja | text/css+django, text/css+jinja | |
| CSS+Genshi Text | css+genshitext, css+genshi | text/css+genshi | |
| CSS+Mako | css+mako | text/css+mako | |
| CSS+Myghty | css+myghty | text/css+myghty | |
| CSS+PHP | css+php | text/css+php | |
| CSS+Ruby | css+erb, css+ruby | text/css+ruby | |
| CSS+Smarty | css+smarty | text/css+smarty | |
| Cython | cython, pyx | *.pyx, *.pxd, *.pxi | text/x-cython, application/x-cython |
| D | d | *.d, *.di | text/x-dsrc |
| d-objdump | d-objdump | *.d-objdump | text/x-d-objdump |
| Darcs Patch | dpatch | *.dpatch, *.darcspatch | |
| Debian Control file | control | control | |
| Debian Sourcelist | sourceslist, sources.list | sources.list | |
| Delphi | delphi, pas, pascal, objectpascal | *.pas | text/x-pascal |
| Diff | diff, udiff | *.diff, *.patch | text/x-diff, text/x-patch |
| Django/Jinja | django, jinja | application/x-django-templating, application/x-jinja | |
| Duel | duel, Duel Engine, Duel View, JBST, jbst, JsonML+BST | *.duel, *.jbst | text/x-duel, text/x-jbst |
| Dylan | dylan | *.dylan, *.dyl | text/x-dylan |
| Embedded Ragel | ragel-em | *.rl | |
| ERB | erb | application/x-ruby-templating | |
| Erlang | erlang | *.erl, *.hrl | text/x-erlang |
| Erlang erl session | erl | *.erl-sh | text/x-erl-shellsession |
| Evoque | evoque | *.evoque | application/x-evoque |
| Factor | factor | *.factor | text/x-factor |
| Felix | felix, flx | *.flx, *.flxh | text/x-felix |
| Fortran | fortran | *.f, *.f90 | text/x-fortran |
| GAS | gas | *.s, *.S | text/x-gas |
| Genshi | genshi, kid, xml+genshi, xml+kid | *.kid | application/x-genshi, application/x-kid |
| Genshi Text | genshitext | application/x-genshi-text, text/x-genshi | |
| Gettext Catalog | pot, po | *.pot, *.po | application/x-gettext, text/x-gettext, text/gettext |
| Gherkin | Cucumber, cucumber, Gherkin, gherkin | *.feature | text/x-gherkin |
| GLSL | glsl | *.vert, *.frag, *.geo | text/x-glslsrc |
| Gnuplot | gnuplot | *.plot, *.plt | text/x-gnuplot |
| Go | go | *.go | text/x-gosrc |
| GoodData-CL | gooddata-cl | *.gdc | text/x-gooddata-cl |
| Groff | groff, nroff, man | *.[1234567], *.man | application/x-troff, text/troff |
| Haml | haml, HAML | *.haml | text/x-haml |
| Haskell | haskell, hs | *.hs | text/x-haskell |
| haXe | hx, haXe | *.hx | text/haxe |
| HTML | html | *.html, *.htm, *.xhtml, *.xslt | text/html, application/xhtml+xml |
| HTML+Cheetah | html+cheetah, html+spitfire | text/html+cheetah, text/html+spitfire | |
| HTML+Django/Jinja | html+django, html+jinja | text/html+django, text/html+jinja | |
| HTML+Evoque | html+evoque | *.html | text/html+evoque |
| HTML+Genshi | html+genshi, html+kid | text/html+genshi | |
| HTML+Mako | html+mako | text/html+mako | |
| HTML+Myghty | html+myghty | text/html+myghty | |
| HTML+PHP | html+php | *.phtml | application/x-php, application/x-httpd-php, application/x-httpd-php3, application/x-httpd-php4, application/x-httpd-php5 |
| HTML+Smarty | html+smarty | text/html+smarty | |
| HTML+Velocity | html+velocity | text/html+velocity | |
| Hybris | hybris, hy | *.hy, *.hyb | text/x-hybris, application/x-hybris |
| INI | ini, cfg | *.ini, *.cfg | text/x-ini |
| Io | io | *.io | text/x-iosrc |
| Ioke | ioke, ik | *.ik | text/x-iokesrc |
| IRC logs | irc | *.weechatlog | text/x-irclog |
| Jade | jade, JADE | *.jade | text/x-jade |
| Java | java | *.java | text/x-java |
| Java Server Page | jsp | *.jsp | application/x-jsp |
| JavaScript | js, javascript | *.js | application/javascript, application/x-javascript, text/x-javascript, text/javascript |
| JavaScript+Cheetah | js+cheetah, javascript+cheetah, js+spitfire, javascript+spitfire | application/x-javascript+cheetah, text/x-javascript+cheetah, text/javascript+cheetah, application/x-javascript+spitfire, text/x-javascript+spitfire, text/javascript+spitfire | |
| JavaScript+Django/Jinja | js+django, javascript+django, js+jinja, javascript+jinja | application/x-javascript+django, application/x-javascript+jinja, text/x-javascript+django, text/x-javascript+jinja, text/javascript+django, text/javascript+jinja | |
| JavaScript+Genshi Text | js+genshitext, js+genshi, javascript+genshitext, javascript+genshi | application/x-javascript+genshi, text/x-javascript+genshi, text/javascript+genshi | |
| JavaScript+Mako | js+mako, javascript+mako | application/x-javascript+mako, text/x-javascript+mako, text/javascript+mako | |
| JavaScript+Myghty | js+myghty, javascript+myghty | application/x-javascript+myghty, text/x-javascript+myghty, text/javascript+mygthy | |
| JavaScript+PHP | js+php, javascript+php | application/x-javascript+php, text/x-javascript+php, text/javascript+php | |
| JavaScript+Ruby | js+erb, javascript+erb, js+ruby, javascript+ruby | application/x-javascript+ruby, text/x-javascript+ruby, text/javascript+ruby | |
| JavaScript+Smarty | js+smarty, javascript+smarty | application/x-javascript+smarty, text/x-javascript+smarty, text/javascript+smarty | |
| Lighttpd configuration file | lighty, lighttpd | text/x-lighttpd-conf | |
| Literate Haskell | lhs, literate-haskell | *.lhs | text/x-literate-haskell |
| LLVM | llvm | *.ll | text/x-llvm |
| Logtalk | logtalk | *.lgt | text/x-logtalk |
| Lua | lua | *.lua, *.wlua | text/x-lua, application/x-lua |
| Makefile | make, makefile, mf, bsdmake | *.mak, Makefile, makefile, Makefile.*, GNUmakefile | text/x-makefile |
| Makefile | basemake | ||
| Mako | mako | *.mao | application/x-mako |
| MAQL | maql | *.maql | text/x-gooddata-maql, application/x-gooddata-maql |
| Mason | mason | *.m, *.mhtml, *.mc, *.mi, autohandler, dhandler | application/x-mason |
| Matlab | matlab, octave | *.m | text/matlab |
| Matlab session | matlabsession | ||
| MiniD | minid | *.md | text/x-minidsrc |
| Modelica | modelica | *.mo | text/x-modelica |
| Modula-2 | modula2, m2 | *.def, *.mod | text/x-modula2 |
| MoinMoin/Trac Wiki markup | trac-wiki, moin | text/x-trac-wiki | |
| MOOCode | moocode | *.moo | text/x-moocode |
| MuPAD | mupad | *.mu | |
| MXML | mxml | *.mxml | |
| Myghty | myghty | *.myt, autodelegate | application/x-myghty |
| MySQL | mysql | text/x-mysql | |
| NASM | nasm | *.asm, *.ASM | text/x-nasm |
| Newspeak | newspeak | *.ns2 | text/x-newspeak |
| Nginx configuration file | nginx | text/x-nginx-conf | |
| NumPy | numpy | ||
| objdump | objdump | *.objdump | text/x-objdump |
| Objective-C | objective-c, objectivec, obj-c, objc | *.m | text/x-objective-c |
| Objective-J | objective-j, objectivej, obj-j, objj | *.j | text/x-objective-j |
| OCaml | ocaml | *.ml, *.mli, *.mll, *.mly | text/x-ocaml |
| Ooc | ooc | *.ooc | text/x-ooc |
| Perl | perl, pl | *.pl, *.pm | text/x-perl, application/x-perl |
| PHP | php, php3, php4, php5 | *.php, *.php[345] | text/x-php |
| PostScript | postscript | *.ps, *.eps | application/postscript |
| POVRay | pov | *.pov, *.inc | text/x-povray |
| Prolog | prolog | *.prolog, *.pro, *.pl | text/x-prolog |
| Properties | properties | *.properties | text/x-java-properties |
| Protocol Buffer | protobuf | *.proto | |
| Python | python, py | *.py, *.pyw, *.sc, SConstruct, SConscript, *.tac | text/x-python, application/x-python |
| Python 3 | python3, py3 | text/x-python3, application/x-python3 | |
| Python 3.0 Traceback | py3tb | *.py3tb | text/x-python3-traceback |
| Python console session | pycon | text/x-python-doctest | |
| Python Traceback | pytb | *.pytb | text/x-python-traceback |
| Ragel | ragel | ||
| Ragel in C Host | ragel-c | *.rl | |
| Ragel in CPP Host | ragel-cpp | *.rl | |
| Ragel in D Host | ragel-d | *.rl | |
| Ragel in Java Host | ragel-java | *.rl | |
| Ragel in Objective C Host | ragel-objc | *.rl | |
| Ragel in Ruby Host | ragel-ruby, ragel-rb | *.rl | |
| Raw token data | raw | application/x-pygments-tokens | |
| RConsole | rconsole, rout | *.Rout | |
| REBOL | rebol | *.r, *.r3 | text/x-rebol |
| Redcode | redcode | *.cw | |
| reStructuredText | rst, rest, restructuredtext | *.rst, *.rest | text/x-rst, text/prs.fallenstein.rst |
| RHTML | rhtml, html+erb, html+ruby | *.rhtml | text/html+ruby |
| Ruby | rb, ruby, duby | *.rb, *.rbw, Rakefile, *.rake, *.gemspec, *.rbx, *.duby | text/x-ruby, application/x-ruby |
| Ruby irb session | rbcon, irb | text/x-ruby-shellsession | |
| S | splus, s, r | *.S, *.R | text/S-plus, text/S, text/R |
| Sass | sass, SASS | *.sass | text/x-sass |
| Scala | scala | *.scala | text/x-scala |
| Scalate Server Page | ssp | *.ssp | application/x-ssp |
| Scaml | scaml, SCAML | *.scaml | text/x-scaml |
| Scheme | scheme, scm | *.scm | text/x-scheme, application/x-scheme |
| SCSS | scss | *.scss | text/x-scss |
| Smalltalk | smalltalk, squeak | *.st | text/x-smalltalk |
| Smarty | smarty | *.tpl | application/x-smarty |
| SQL | sql | *.sql | text/x-sql |
| sqlite3con | sqlite3 | *.sqlite3-console | text/x-sqlite3-console |
| SquidConf | squidconf, squid.conf, squid | squid.conf | text/x-squidconf |
| Tcl | tcl | *.tcl | text/x-tcl, text/x-script.tcl, application/x-tcl |
| Tcsh | tcsh, csh | *.tcsh, *.csh | application/x-csh |
| TeX | tex, latex | *.tex, *.aux, *.toc | text/x-tex, text/x-latex |
| Text only | text | *.txt | text/plain |
| Vala | vala, vapi | *.vala, *.vapi | text/x-vala |
| VB.net | vb.net, vbnet | *.vb, *.bas | text/x-vbnet, text/x-vba |
| Velocity | velocity | *.vm, *.fhtml | |
| verilog | v | *.v, *.sv | text/x-verilog |
| VimL | vim | *.vim, .vimrc | text/x-vim |
| XML | xml | *.xml, *.xsl, *.rss, *.xslt, *.xsd, *.wsdl | text/xml, application/xml, image/svg+xml, application/rss+xml, application/atom+xml, application/xsl+xml, application/xslt+xml |
| XML+Cheetah | xml+cheetah, xml+spitfire | application/xml+cheetah, application/xml+spitfire | |
| XML+Django/Jinja | xml+django, xml+jinja | application/xml+django, application/xml+jinja | |
| XML+Evoque | xml+evoque | *.xml | application/xml+evoque |
| XML+Mako | xml+mako | application/xml+mako | |
| XML+Myghty | xml+myghty | application/xml+myghty | |
| XML+PHP | xml+php | application/xml+php | |
| XML+Ruby | xml+erb, xml+ruby | application/xml+ruby | |
| XML+Smarty | xml+smarty | application/xml+smarty | |
| XML+Velocity | xml+velocity | application/xml+velocity | |
| XQuery | xquery, xqy | *.xqy, *.xquery | text/xquery, application/xquery |
| XSLT | xslt | *.xsl, *.xslt | text/xml, application/xml, image/svg+xml, application/rss+xml, application/atom+xml, application/xsl+xml, application/xslt+xml |
| YAML | yaml | *.yaml, *.yml | text/x-yaml |
