Ruby: конвертировать HTML / Redcloth в простой текст - PullRequest
2 голосов
/ 05 июня 2009

Кто-нибудь знает, как я могу конвертировать HTML в обычный текст с помощью Ruby. Ну, на самом деле мне нужно конвертировать RedCloth в простой текст, в любом случае все будет в порядке.

Я не говорю просто об удалении тегов (это все, что я сделал до сих пор). Например, я хотел бы, чтобы упорядоченный список сохранял числа, неупорядоченные списки использовали звездочку для маркеров и т. Д.

 def red_cloth_to_plain_text(s)
       s = RedCloth.new(s).to_html
       s = strip_tags(s)
       s = html_unescape(s) # reverse of html_escape
       s = undo_red_cloths_html_codes(s)
       return s 
 end

Может быть, мне нужно попробовать RedCloth для форматирования простого текста

Ответы [ 3 ]

2 голосов
/ 05 июня 2009

Вам нужно создать новый класс форматера.

module RedCloth::Formatters
  module PlainText
    include RedCloth::Formatters::Base
    # ...
  end
end

Я не буду писать ваш код для вас сегодня, но это очень легко сделать. Прочитайте источник RedCloth, если вы сомневаетесь во мне: это всего 346 строк для форматера HTML.

Итак, когда у вас есть форматтер PlainText, вы исправляете класс и используете его:

module RedCloth
  class TextileDoc
    def to_txt( *rules )
      apply_rules(rules)
      to(RedCloth::Formatters::PlainText)
    end
  end
end

print RedCloth.new(str).to_txt
2 голосов
/ 13 мая 2010

Джозеф Холтер написал простой форматировщик RedCloth:

http://github.com/JosephHalter/redcloth-formatters-plain

Пример использования:

RedCloth.new("p. this is *simple* _test_").to_plain

вернет:

"this is simple test"
0 голосов
/ 05 июня 2009

Это может быть то, что вы должны сделать. Вы не первый, кто хочет это , но я предполагаю, что это еще не часть библиотеки, потому что все хотят, чтобы их открытый текст немного отличался.

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