Предварительное условие: парсер подстановки должен уже преобразовать все действительные ссылки
шаблоны в тексте на активные URL-адреса гиперссылок.
ВЗЛОМ ВАШЕГО ИСТОЧНИКА WIKI
161
Предлагаемый код подстановки форматирования включает счетчик, определенный в
вызывающая процедура, перезапуская с нуля для каждой страницы:
s/\[\[(.*?)\]\]/&AsHiddenLink($l,++$hnum)/ge;
Это ищет любые вхождения текста в двойных скобках в исходном тексте, например:
[[http://www.anydomain.com/cgi-bin/somescript?параметр]]
Скобки нужно экранировать, поэтому лишние обратные косые черты несколько разрушают
исходная читаемость здесь. Когда соответствующий шаблон найден, мы подставляем результат
подпрограмма AsHiddenLink применяется к соответствующей строке. Это нотация perl5,
поэтому мы можем применить «минимальное» сопоставление («?» после «любого количества символов»
точка-звездочка), чтобы разрешить несколько экземпляров в одной строке. Поиск глобальный и
оценивается правое выражение (ge).
Подпрограмма AsHiddenLink преобразует переданную строку в гиперссылку с номером цитирования и очень короткая:
sub AsHiddenLink {
мой ($ref, $hnum) =
;
$ref .= "<\/a>" if $ref =~ s/<img src/<a href/ ;
$ref =~ s:>(.*)<:>$hnum<:g;
"[$ ссылка]"
}
(Вторая) замена основана на том факте, что мы можем идентифицировать якорь как текст
между тегами привязки (<a href=....>...</a>), и именно поэтому нам нужно это преобразование
сделано заранее. Возвращаемое значение всегда получает одну пару квадратных скобок.
вокруг него. Первая замена, наверное, кажется загадочной, но она относится к одному из
базовые функции вики, такие как встроенный рендеринг ссылочного графического файла. Это просто способ
отключить в противном случае автоматический рендеринг изображения.
Совет 6.15: Возможность отключить встроенное изображение
Эта процедура скрытого URL-адреса цитирования гарантирует, что URL-ссылка на распознанный
графический файл, уже активированный как встроенное изображение, может быть дополнительно «восстановлен»
на простую гиперссылку. Затем встроенное правило становится, например,
http:fiXe.jpg = отображать; изображение, [[http:file.jpg]] пронумеровать
ссылка на файл.
1
42
НАСТРОЙКА ВАШЕЙ ВИКИ
Итак, что произойдет, если строка в двойных скобках не является активной ссылкой? Хорошо,
в этом хаке мы просто возвращаем заключенный в квадратные скобки экземпляр той же строки, с которой мы начали
и пропустить номер. Это приемлемое поведение.