一个python脚本,用于将使用非闭合标记(如hamlet模板)编写的html转换为使用闭合标记的html。
Dangler的Python项目详细描述
问题-
如果你是用手写的话,写html会很痛苦。如果 可以用python风格编写html,使用缩进而不是关闭标记来分隔块。 这是无耻地从哈斯克尔的哈姆雷特模板复制的东西。
如何使用-
<!DOCTYPE html> <html> <body> <div> Here is some content
将扩展到
<!DOCTYPE html> <html> <body> <div> Here is some content </div> </body> </html>
特例-
假设要创建此HTML结构
<html> <body> <div> Here is some content <span> content inside span </span> More content </div> </body> </html>
如果您试图使用Dangler进行此操作,
<html> <body> <div> Here is some content <span> content inside span more content
这是行不通的。最后一行,“更多内容”将 无法添加到范围内的内容。相反,它会 添加到父div,因为它的缩进与 div而不是跨度的子元素。添加不关心的内容 缩进,只放一行“”。这将启动“收集模式” 它将所有跟在后面的行聚集到另一个“”,所有行都单独在一行中 在收集模式下收集的内容的缩进是从 第一个“”后面的第一行被看到。所以以我们为例,我们可以做点什么 像这样
<html> <body> <div> Here is some content <span> """ content inside span more content """
如果你只想有一个带“”的行,只要用反斜杠转义就行了。
与其他模板系统一起使用-
dangler不做html解析。它只是安排文本文件的内容 一组嵌套块。像关闭标签这样的事情是通过扩展来完成的 处理这些嵌套块的。现在,dangler启用了两个扩展 默认情况下,这将适用于HTML和Jinja2文件。
如果对此文本运行dangler,则
<html> <body> <div> Here is some content <span> content inside span more content {% if something %} <div> do this {% elif %} <div> do that {% if otherthing %} <span> so and so {% set a = f %} {% if not something %} {% set nav %} <div> something here {% for a = b %} <div> <div> do a {% elif other thing%} <table> <tr> <td> do other thing {% elif other someting %} <p> dont do anything! {% else %} <span> get something from user <input type="text"/> {% else %} <p> do something even nicer!
它将扩展到
<html> <body> <div> Here is some content <span> content inside span </span> more content {% if something %} <div> do this </div> {% elif %} <div> do that </div> {% if otherthing %} <span> so and so </span> {% set a = f %} {% if not something %} {% set nav %} <div> something here </div> {% endset %} {% for a = b %} <div> <div> do a </div> </div> {% endfor %} {% elif other thing%} <table> <tr> <td> do other thing </td> </tr> </table> {% elif other someting %} <p> dont do anything! </p> {% endif %} {% else %} <span> get something from user </span> <input type="text"/> {% endif %} {% else %} <p> do something even nicer! </p> {% endif %} </div> </body> </html>
Jinja2支持 丢失了一些标签。如果你找到一个,请张贴一个问题或拉请求。
用法-
dangler path/to/file/with/unclosed/tags.html
这将打印出HTML,关闭并美化标记。
玩得开心!