На рис. 6-4 показано, как список многих ссылок на веб-страницы, которые в противном случае могли бы

легко становится почти нечитаемым, превращается в очень респектабельную страницу с помощью этого

расширение. Даже дать несколько ссылок в одной строке становится легко.

На иллюстрации вики-страница оформлена с помощью CSS, поэтому, например,

ссылки отображаются курсивом. Обратите внимание на неопределенные ссылки на вики-страницы, показанные с

якоря с префиксом "?".

Правила для списков

Разные вики поддерживают списки (маркированные и нумерованные) немного по-разному.

некоторые с вложенными и смешанными уровнями. Здесь мы рассмотрим несколько вариантов, в том числе

устаревшие версии, потому что вы можете захотеть дополнить или заменить базовые

правило вики.

http: / /ωωω. Daynoies.com/

http://wwiu.netwiclows<itQolcom/

• Сайт портала Daynole.com. • Сайт Daynoter Widows -

Первоначальный «костяк», который мы переживали, следовал по цепочке ί

• [2] JerryPourneIle - текущий вид "

• М Боб Томпсон « [5] ток

• [0] BoLeuf - [7] текущий редиректор

• [ 3 TomSyroid « [g] текущий редиректор

[3]) текущая почта

Oilier"daynoteiV (перетасован, но опять без подразумеваемого порядка):

• IM PShawnWaUbridge

• LU] JFauIRobichaux

• U2\ fСтив Такер

• fi3l SjonSvenson — действующий

• 1141 Джон Дусетт

ф

перенаправитель

\1S] Дж. Э. Рик Раймонд

+ U6lДан Сето

РИСУНОК 6-4.

Эта деталь вики-страницы показывает смесь ссылок

типичный, включая многочисленные скрытые ссылки цитирования

состоящий из более длинных URL-адресов http. Обратите внимание на улучшенный

удобочитаемость по сравнению с двумя короткими явными

http ссылки вверху.


ВЗЛОМ ВАШЕГО ИСТОЧНИКА WIKI

163

Наше предпочтительное правило для списка с отступом использует простое «интуитивное» начало строки.

характер. Количество раз, которое мы включаем, указывает на нужный уровень. Следовательно, для

маркированные списки:

* следует указать элемент первого уровня (и убрать звездочку)

** должен давать второй уровень и т. д.

Это отходит от правила HTML-тега для разметки абзаца, где вам нужно

укажите теги начального и конечного блоков в дополнение к тегу элемента списка. Однако, как

показано ниже, скрипт может генерировать их на лету, так зачем обременять автора страницы

с такими утомительными подробностями?

Замена строки списка для этого выглядит следующим образом:

с/*(\*+)/<li>/

ScSc($body .= &EmitCode('UL', длина $1));

Как и все теги абзаца блочного типа, нам нужны две части:

• Шаблон поиска обнаруживает одну или несколько звездочек, начинающих строку позиции, и

заменяет его любым подходящим тегом элемента (здесь <LI>).

• Вызов подпрограммы обрабатывает теги блока и уровень вложенности — длину

соответствующая строка совпадает с количеством звездочек. Это та часть, которая позволяет

автору страницы просто указать элементы, а не явно охват всего блока.

Связывание частей вместе с помощью логического оператора И (&&) означает, что правильный

half выполняется только в том случае, если левая половина принимает значение true. Perl не утруждает себя поиском

далее, если левая часть оценивается как ложная, то конструкция эквивалентна if

(слева) {затем направо}.

Правый вызов подпрограммы указывает требуемый тег блока <UL>. . </UL> для

неупорядоченный список. Подпрограмма возвращает тег HTML (или теги), необходимый для запуска

блокировать (и, возможно, завершать предыдущий). Некоторые более ранние версии вики, отправляющие

выводить теги результата и текущую строку непосредственно по мере их обработки не нужно.

объединять строки таким образом. Код подпрограммы следующий:

суб-эмиткод {

моя $глубина;

($ код, $ глубина) =

мои $теги = '';

# наш текущий стек тегов


1

42

НАСТРОЙКА ВАШЕЙ ВИКИ

в то время как (©код > $глубина) {

$теги .= '</' . (поп @код) . ">\n";

}