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

<<TableOfContents>>

= Парсеры =

Текст страницы пропускается через парсеры, в результате чего создается последовательность вызовов форматтеров, которые возвращают более читабельный текст. MoinMoin предоставляет несколько путей для выбора парсера страницы: инструкция FORMAT (см. ПомощьПоИнструкциям) и блоки кода (см. КакФорматировать)

Инструкция `#FORMAT` используется, чтобы указать MoinMoin какой парсер нужно применять ко всей странице. Обычно применяется парсер ''wiki''. Пример: {{{#FORMAT cplusplus
... некий код на C++ ...
}}}

В случае блоков кода парсеры применяются только к кусочку страницы (раньше это называлось 'processor region'). Вы указываете применяемый парсер, применяя конструкцию подобную 'bang path', в первой строке. 'bang path' - это   концепция, известная по скриптам Unix, она призвана удовлетворять единственной цели: первая строка говорит оболочке какая программа должна выполнять данный скрипт. Пример: {{{
{ { {#!CSV
a,b,c
d,e,f
} } }
}}}

Подробней смотри КакРедактировать.

== ParserBase ==

!ParserBase - это вспомогательный класс парсеров, используемый для подсветки блоков кода. Это довольно просто. Форматтер HTML при обработке отображает какой-то участок кода с нумерацией строк, если броузер поддерживает технологии DOM и !JavaScript.

Парсеру !ParserBase можно передать некоторые аргументы, для этого их надо просто добавить после имени парсера. (`#FORMAT python start=10 step=10 numbering=on` либо `#!python numbering=off`).

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

MoinMoin поставляется с небольшим числом парсеров, с которыми вы можете делать следующее:

=== cplusplus ===

{{{#!cplusplus
int main(int argc, char **argv) {
  return 0;
}
}}}

=== java ===

{{{#!java
import java.util.Date;
import java.util.Calendar;

public class IntDate
{
  public static Date getDate(String year, String month, String day)
    {
      // Date(int, int, int) has been deprecated, so use Calendar to
      // set the year, month, and day.
      Calendar c = Calendar.getInstance();
      // Convert each argument to int.
      c.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
      return c.getTime();

    }
}
}}}

=== pascal ===

{{{#!pascal
function TRegEx.Match(const s:string):boolean;
var
    l,i : integer;
begin
    result := MatchPos(s,l,i);
end;
}}}

== python ==

Подсветка кода на python'е. Это не наследник ParserBase, но он понимает те же самые аргументы.

{{{#!python
def hello():
    print "Hello World!"
}}}

== IRC ==

Представление логов IRC в виде таблицы.

{{{#!irc
(23:18) <     jroes> ah
(23:19) <     jroes> hm, i like the way {{{ works, but i was hoping the lines would wrap
(23:21) -!- gpciceri [~gpciceri@host181-130.pool8248.interbusiness.it] has quit [Read error: 110 (Connection timed out)]
(23:36) < ThomasWal> you could also write a parser or processor
(23:38) <     jroes> i could?
(23:38) <     jroes> would that require modification on the moin end though?
(23:38) <     jroes> i cant change the wiki myself :x
}}}

<<Anchor(csvparser)>>
== CSV ==

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

'bang path' может содержать аргумент "`-`''число''", где число обозначает количество столбцов в таблице (начинается с 1).

Другой аргумент считается разделителем записей. Это может быть запятая (`,`) или точка с запятой (`;`). Если разделитель не указан, то используется точка с запятой. Смотри примеры дальше.

 /!\ Сейчас в MoinMoin используется ''очень'' простой CSV парсер.

Фрагмент истории изменений !MoinMoin 1.3: {{{#!CSV , -4

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

История версий MoinMoin: {{{#!CSV -3
История;Дата;Скрытый!
0.11;2002-03-11;Revision 1.151
0.10;2001-10-28;Revision 1.134
0.9;2001-05-07;
0.8;2001-01-23;
0.7;2000-12-06;
0.6;2000-12-04;
0.5;2000-11-17;
0.4;2000-11-01;
0.3;2000-10-25;
0.2;2000-08-26;
0.1;2000-07-29;
}}}

== СтруктурированныйТекст ==

Смотри /СтруктурированныйТекст

== XML/XSLT/DocBook ==

Смотри ПомощьПоXmlСтраницам
