## 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 <> = Парсеры = Текст страницы пропускается через парсеры, в результате чего создается последовательность вызовов форматтеров, которые возвращают более читабельный текст. 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 }}} <> == 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Страницам