Парсеры

<<TableOfContents: execution failed [list index out of range] (see also the log)>>

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

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

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

  1. Указание инструкции #format

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

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

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

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

Здесь в качестве примера выступает отдельная страница:

#format creole
... **полужирное начертание** ...

Пример: блок с указанием парсера

В данном примере подразумевается, что это — часть вики-страницы:

Будет отображно как:

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

Существует два способа решения проблемы с вложением блоков:

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

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

Ряд парсеров предназначен для использования в нормальном тексте страницы (т. е. как документ):

Парсер CSV

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

При указании парсера можно задавать следующие параметры:

Пример использования парсера (см. исходный текст страницы для разметки): фрагмент истории изменений МойнМойн 1.3:

Номер патча Описание Автор
Дата
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
}}}

Будет показан на странице следующим образом:

Тип Сервер
вики MoinMoin
перевод master19

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

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

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

Парсер highlight

В состав МойнМойн входит специальный парсер, называемый highlight и использующий Pygments для разбора различных синтаксисов.

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

Аргументы

Поддерживаемые параметры подсветки синтаксиса:

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 можно использовать значения из столбца «Lexer names».

Lexer description Lexer names File patterns Mimetypes
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