Парсеры

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

   1 int main(int argc, char **argv) {
   2   return 0;
   3 }

java

   1 import java.util.Date;
   2 import java.util.Calendar;
   3 
   4 public class IntDate
   5 {
   6   public static Date getDate(String year, String month, String day)
   7     {
   8       // Date(int, int, int) has been deprecated, so use Calendar to
   9       // set the year, month, and day.
  10       Calendar c = Calendar.getInstance();
  11       // Convert each argument to int.
  12       c.set(Integer.parseInt(year),Integer.parseInt(month),Integer.parseInt(day));
  13       return c.getTime();
  14 
  15     }
  16 }

pascal

   1 function TRegEx.Match(const s:string):boolean;
   2 var
   3     l,i : integer;
   4 begin
   5     result := MatchPos(s,l,i);
   6 end;

python

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

   1 def hello():
   2     print "Hello World!"

IRC

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

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

CSV

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

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

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

Фрагмент истории изменений MoinMoin 1.3:

patch-366 make _normalize_text public method Nir Soffer
patch-367 fixed failing test wikiutil: good system page names Nir Soffer
patch-368 Fixed DeprecationWarning in RandomPage.py and an unused import in twistedmoin.py Alexander Schremmer
patch-369 remove duplicate code in formatter.base Thomas Waldmann
patch-370 fixed long int in mig3 Thomas Waldmann
patch-371 fixed unicode error on eventlog Nir Soffer
patch-372 fixed util.web.makeQueryString and Page.url Nir Soffer
patch-373 fixed again non ascii http_referer Nir Soffer
patch-374 CSV.py supports different separators now Alexander Schremmer
patch-375 improved searchform behavior on Mozilla/Firefox Nir Soffer
patch-376 More correct script for actions menu init Nir Soffer

История версий MoinMoin:

История Дата
0.11 2002-03-11
0.10 2001-10-28
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Страницам