Comentando a automação de fechamento da div.
-
22-09-2019 - |
Pergunta
Estou procurando uma solução para um ninho de ratos de código que fui entregue - é enorme em volume, por isso estou procurando sugestões para uma abordagem programática para comentar o que a div fecha onde.
Exemplo:
ANTES DA
<div id="wrapper-item">
<div id="outer-item">
<div class="inner-item">
<h1>Just Some Placekeeper Copy</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing.</p>
</div>
</div>
</div>
DEPOIS
<div id="wrapper-item">
<div id="outer-item">
<div class="inner-item">
<h1>Just Some Placekeeper Copy</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing.</p>
</div><!-- .inner-item -->
</div><!-- #outer-item -->
</div><!-- #wrapper-item -->
Eu tentei algumas tentativas de Regex sem alegria, eu ficaria curioso para saber qual é a melhor abordagem ..
Solução
Se for válido XHTML, você pode colocá -lo em um documento XML e processar as tags Div, encontrando todas elas e adicionando um irmão que tem o nó de comentário que você deseja.
Outras dicas
Uma expressão regular solitária pode funcionar, mas pode ser melhor escrever um programa aprimorado por expressões regulares. Obtenha o texto entre < div id="
e >
, adicione isso em uma lista ou pilha e vincule -a, em ordem, com um índice int. Continue examinando -o e ao encontrar uma tag '', coloque o texto mais recente da pilha e formate -o para se tornar um comentário.
Eu apenas uso um script para recuar corretamente o HTML para que eu possa verificar rapidamente se todas as tags estiverem fechadas corretamente - o recuo voltar corretamente para tocar a margem esquerda. Para verificar o que a abertura corresponde a que fechamento eu uso um editor de texto dobrável como Scite ou Komodo Edit para que eu possa navegar no código corretamente recuado, abrindo e colapsando seções.
Se alguém estiver interessado no script de recuo (escrito no TCL), posso carregá -lo em algum lugar. Como alternativa, você pode tentar usar algo como htmltidy para fazer a formatação.
Você pode usar uma API XML/DOM para um idioma específico e brincar com como ele lida com objetos de comentário. Por exemplo, Python - http://docs.python.org/library/xml.dom.html#comment-objects
<div>whatever</div>
<!-- this comment is already deprecated -->
Basta usar um editor decente que destaque a etiqueta inicial/final. Mesmo o noto do noto faz isso. A maioria dos editores também pode selecionar tags e conteúdos, ou apenas conteúdo. Muitos editores também reformatarão o HTML para você (se você ousar).
Comentar o final da tag vai sair da sincronização e será ainda mais difícil de seguir para você ou seus colegas de trabalho.
Se você acabar adicionando com sucesso comentários redundantes a cada div, span, p, ul, etc., acho que você encontrará o código ainda mais inchado e ilegível.