Каков хороший синтаксис для разметки ссылок HTML, чтобы упростить внутренние ссылки? - PullRequest
1 голос
/ 07 октября 2009

Я хочу создать хороший синтаксис для облегчения ссылок на внутренние вещи, вроде вики, поэтому, возможно, я думаю, что пользователь может использовать что-то вроде:

Bah bah bah reference: [[a]]

И это преобразовало бы это в HTML:

Bah bah bah reference: <a href="..../id=a">title</a>

но меня волнуют проблемы с междометиями и безопасностью. Какой синтаксис можно выбрать (может быть [[]] или что-то еще) и какое безопасное регулярное выражение для него?

Ответы [ 3 ]

7 голосов
/ 07 октября 2009

Не изобретайте велосипед: Text :: Markdown .

3 голосов
/ 07 октября 2009

Хотя идея Синан использовать существующий синтаксис, такой как Markdown, хороша, жизнеспособность такого подхода зависит от особенностей вашей ситуации. Вы не сказали нам достаточно, чтобы получить очень полезные ответы. Вы начинаете с чистого листа или унаследуете большой объем существующих документов, которые потребуют дорогостоящего процесса преобразования, не говоря уже о переподготовке персонала?

Если последнее, то иногда лучше решать проблему, думая с точки зрения краткосрочных обходных путей и долгосрочных стратегий. Краткосрочный обходной путь - своего рода домашний синтаксис, точно такой же, как предложенный в вашем вопросе, - будет уродливым и может вызвать неприятности тут и там, но он может сделать работу. Например, в нашей организации имеется большая куча документов Word, которые в конечном итоге предоставляют контент для HTML-страниц. В этих файлах Word сотрудник использует такой подход для создания ссылок и делает несколько других объявлений, которые обрабатывает наш код синтаксического анализа: ##some_link##. Есть много способов, чтобы это потерпело неудачу, но в типе контента, который мы производим, это происходит редко. Отчасти по этой причине трудно вызвать большой энтузиазм по поводу долгосрочной стратегии переноса контента в более надежную систему. Я ожидаю, что такая миграция произойдет, но она обусловлена ​​более широкими соображениями, а не ограничениями нашего устройства разметки kludgy ##foo##.

Обновление:

Судя по вашим дополнительным комментариям, у вас будет список ссылок, которые вы хотите, чтобы пользователи могли быстро добавлять, используя короткие идентификаторы. Таким образом, эти ссылки будут определены где-то, скажем, в хеше Perl. Вы можете использовать этот хеш для защиты от недействительных записей. Например:

use strict;
use warnings;

my %approved_links = (
    so_perl => 'http://stackoverflow.com/questions/tagged/perl',
    so_ruby => 'http://stackoverflow.com/questions/tagged/ruby',
);

my $regex = qr/ \[\[ ([^\]]+) \]\] /x;

while (<DATA>){
    die "Danger: $_\n" if map {
        exists $approved_links{$_} ? () : ($_)
    } /$regex/g;
    s/$regex/$approved_links{$1}/g; # Not complete, but you get the idea.
    print;
}

__DATA__
Some text [not an id] [[so_perl]] more [[so_ruby]] more..
[[so_perl]] blah [[so_ruby]] blah
[[bad id!!]]
1 голос
/ 09 октября 2009

Что-то вроде Текстиль или Креольский ? Почему вы не используете существующую реализацию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...