Предварительное условие: парсер подстановки должен уже преобразовать все действительные ссылки

шаблоны в тексте на активные 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

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

Итак, что произойдет, если строка в двойных скобках не является активной ссылкой? Хорошо,

в этом хаке мы просто возвращаем заключенный в квадратные скобки экземпляр той же строки, с которой мы начали

и пропустить номер. Это приемлемое поведение.