На рис. 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";
}