2010-08-05 1 views
2

Многие мои пользователи печатают простые URL-адреса и не используют формат Textile для создания ссылок. Я бы хотел, чтобы Textile просто привязывал URL к URL-адресу. Мне не нужно беспокоиться о XSS или о чем-то злом, потому что это внутренняя сеть с очень небольшой группой пользователей. Каким будет лучший способ достичь этой функциональности?Как я могу заставить Textile создавать ссылки из простых URL?

Я использую Ruby версию RedCloth.

ответ

1

Я не уверен, что RedCloth может превращать URL-адреса в интерактивные ссылки, но есть текстовый помощник Rails под названием auto_link, который может.

+0

Интересно. Я уже отправляю данные через Textile, поэтому отправка его через другой парсер - это не совсем то, что я хочу делать. – Sixty4Bit

3

Как насчет этого?

def urls2links(s) 
    s.gsub(
    /([^:])((https?|ftp)\:\/\/[^\s)'"]+[^.,)\s])(. |, |[\s]|\) |)/, 
    '\1<a href="\2" target="_blank">\2</a>\4') 
end 

def textile2html(s) 
    textilize(urls2links(s)).html_safe 
end 

Используйте этот текст, чтобы проверить его:

Plain urls converted to external links by my textile2html helper: 
* http://www.google.com 
* http://www.google.com, 
* http://www.google.com. 
+0

Дайте свой ответ и добавьте новый код – Yaroslav

+0

Отредактируйте ваш ответ другим, чтобы увидеть полный ответ сразу, и нет необходимости читать все комментарии – Yaroslav