HTML beautifier, который помещает входные теги в отдельные строки - PullRequest
2 голосов
/ 23 февраля 2012

Мне нужно поработать с какой-то действительно уродливой разметкой, и я провожу ее через Tidy на ruby. По большей части это работает отлично, за исключением того факта, что он объединяет тонну скрытых входных данных, которые находятся в разметке на одной строке. Я знаю, что есть параметр для переноса столбца, но было бы лучше, если бы он просто помещал входные данные в отдельные строки. Это важно, потому что это упростит отладку при просмотре разметки и быстрого просмотра информации в этих скрытых входах.

Мне еще предстоит найти инструмент, который делает это. Так что-нибудь есть или я глуп?

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

Сейчас я согласен с приведением в порядок источника, а затем (я знаю, это ужасно) gsub(/<input[^>]*>/, '\0'+"\n"). Мне нравится тот факт, что я должен был соединить захват с новой строкой.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Tidy, как правило, проблематичен в Ruby. сообщается о утечке памяти, она не совместима с 1.9 и т. Д. Однако вы можете вообще пропустить Tidy, используя Nokogiri и самоцвет nokogiri-pretty.

Предполагая, чтоу вас есть документ Nokogiri:

require 'nokogiri-pretty'
puts doc.human

В дополнение к другим сведениям, все теги <input> будут на отдельной строке и имеют правильный отступ.

0 голосов
/ 23 февраля 2012

Нокогири может сделать это достаточно легко:

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