Парсеры
Текст страницы пропускается через парсеры, в результате чего создается последовательность вызовов форматтеров, которые возвращают более читабельный текст. 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
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
python
Подсветка кода на python'е. Это не наследник ParserBase, но он понимает те же самые аргументы.
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 используется очень простой CSV парсер.
Фрагмент истории изменений MoinMoin 1.3:
История версий MoinMoin:
СтруктурированныйТекст
Смотри /СтруктурированныйТекст
XML/XSLT/DocBook
Смотри ПомощьПоXmlСтраницам