一个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,关闭并美化标记。

玩得开心!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java过滤会导致JPQL查询   java中的部署控制台   java检索列表内部映射的值   从java堆收集旧对象的垃圾收集   java在运行时向JTable追加新行   很简单的构造函数问题,我就是搞不懂。JAVA   基于IVONA-TTS的java文本语音识别   java将数据保存到数组更高效的代码   java在文件中逐字读取   java在Eclipse中运行两个安卓设备实例   Java兼容性编译模式   java我可以使用SendGrid向多个用户发送电子邮件吗?   java Android:FusedLocationProvider,每隔几秒钟获取一次位置   java在具有并行性限制的惰性流上应用方法   多线程如何使多线程应用程序在java中分布?   java将自定义数据源添加到Jaspersoft Studio   java如何对方法执行post请求返回整数