2009-06-05 3 views
2

Кто-нибудь знает, как я могу преобразовать html в обычный текст с Ruby. Ну, действительно, мне нужно преобразовать RedCloth в обычный текст, в любом случае все будет хорошо.Ruby: Конвертировать HTML/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 в обычное форматирование

ответ

2

Вам необходимо создать новый класс форматирования.

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 
0

Это может быть то, что вы нужно сделать. You're not the first to want this, но я предполагаю, что это еще не часть библиотеки, потому что каждый хочет, чтобы их открытый текст немного отличался.

Смежные вопросы