2013-04-02 2 views
1

Мы используем Bluecloth для форматирования текста на веб-сайте rails, но у меня возникла проблема с некоторыми адресами электронной почты. Когда у них есть двойные подчеркивания в адресе BlueCloth, он переводит его в теги EM.Использование BlueCloth, как я могу отключить уценку для части текста?

В консоли рельсах:

BlueCloth::new("[email protected]").to_html 
"<p>[email protected]</p>" 

Адрес электронной почты с одним подчеркиванием работает отлично, но когда есть два подчеркивания в адрес Подчеркивания заменяются на эм теги:

BlueCloth::new("[email protected]").to_html 
"<p>bob<em>jones</em>[email protected]</p>" 

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

BlueCloth::new("<notextile> [email protected] </notextile>").to_html 
"<p><notextile> bob<em>jones</em>[email protected] </notextile></p>" 

Кто-нибудь знает, как с этим справиться? Мы используем версию bluecloth 2.2.0.

ответ

2

Один из вариантов, чтобы переключить настройку :relaxed в true:

BlueCloth.new('[email protected]', relaxed: true).to_html 

The option documentation is available online но имена опций и способ их отображения на опцию в базовой библиотеке C не всегда очевидны.

Если вы хотите использовать параметры по умолчанию для текста, где вам нужно в-слове акцент в некоторых местах, но не другие вы можете explicitly escape the underscores:

escaped_email = '[email protected]'.gsub('_', '\_') 
BlueCloth.new(escaped_email).to_html 
+0

Большое спасибо! Это будет работать для меня. –

0

Почему бы вам не использовать интерполяцию строки?

BlueCloth::new("don't format this: %s").to_html % '[email protected]' 
=> "<p>don't format this: [email protected]</p>" 

Если вы не знаете, где вы хотите сохранить исходную строку, которая была бы ... нечетной.

+0

Спасибо за ответ, это хорошая идея, но контент приходит ко мне из внешнего источника, поэтому я не контролирую его. –