HTML美化器,将输入标签放在不同的行上

时间:2012-02-22 23:08:42

标签: ruby htmltidy

我必须使用一些看起来非常丑陋的标记,然后我在ruby上通过Tidy运行它。在大多数情况下,它工作得很好,除了它将标记中的大量隐藏输入集中在一行上。我知道有一个列换行设置,但如果它只是将兄弟输入放在不同的行上会更好。这很重要,因为它可以在查看标记时简化调试,并在这些隐藏的输入中快速查看信息。

我还没有找到一个能够做到这一点的工具。那么有什么东西或者我是愚蠢的吗?

我还应该补充一点,很多问题源于我最初得到的糟糕标记,在我找到它之前我无法做任何事情来清理它。我尝试了Nokogiri-pretty来清理它并且它非常接近完美但它将脚本标签转换为自动关闭标签,这是不好的。

现在我正在解决来源,然后(我知道这很可怕)gsub(/<input[^>]*>/, '\0'+"\n")。我喜欢这样一个事实,即我必须用新线连接捕获。

2 个答案:

答案 0 :(得分:2)

Tidy在Ruby中往往存在问题。它已经reported泄漏内存,它不兼容1.9等等。但是,你可以通过使用Nokogiri和nokogiri-pretty gem来完全跳过Tidy。

假设你有一个Nokogiri医生:

require 'nokogiri-pretty'
puts doc.human

除了其他整理之外,所有<input>标记都将在各自的行中并正确缩进。

答案 1 :(得分:0)

Nokogiri可以轻松做到这一点:

doc.css('input').each{|input| input.before "\n"}