通缉:命令行HTML5美化

bli*_*nry 74 html5 command-line pretty-print indentation

通缉

在Linux下运行的命令行HTML5美化器.

输入

乱码,丑陋的HTML5代码.可能是多个模板的结果.你不爱它,它不爱你.

产量

纯美.代码很好地缩进,有足够的换行符,关心它的空白.您希望直接在网站上显示代码,而不是在网络浏览器中查看它.

犯罪嫌疑人

  • 整理太多了(哎呀,它改变了我的doctype!),并且它与HTML5不兼容.也许有办法让它合作而不改变任何东西
  • vim太少了.它只是缩进.我希望程序添加和删除换行符,并使用标签内的空白.

死或生!

mha*_*sen 26

HTML Tidy已被w3c分叉,现在支持HTML5验证.

https://github.com/w3c/tidy-html5

  • 截至2014年7月,该项目似乎停滞了两年 (3认同)
  • 截至2015年4月,它似乎还活着.虽然你仍然需要通过拉动git repo来自己构建二进制文件. (2认同)
  • 截至2016年6月,您可以在OSX上使用Homebrew进行安装. (2认同)

Mr.*_* 安宇 19

我怀疑可以使用正确的命令行参数进行整理.

http://tidy.sourceforge.net/docs/quickref.html

您可以指定任意doctype并添加新块,内联和空标签,并打开和关闭许多整洁的清洁选项.

根据你想要它"美化"的东西,你可能会得到不错的结果.它可能无法做一些更高级的事情,如重写html内容以消除虚假元素或组合它们,如果它不能识别它们.

  • 粗略猜测,怎么样`tidy -as-xhtml --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags文章,页眉,页脚 - 新-inline-tags视频,音频,画布,ruby,rt,rp --doctype"<!DOCTYPE HTML>" - break-before-br yes --sort-attributes alpha --vertical-space yes`(免责声明 - 我我没有使用过html5,而且我只是通过猜测哪些是块/内联来将http://www.w3schools.com/html5/html5_reference.asp中的一些新标签复制到列表中,所以请根据情况进行调整.) (14认同)
  • 我在这里有两个选项有问题.`--doctype"<!DOCTYPE HTML>"`和`--sort-attributes alpha`由于某种原因不起作用 (2认同)

Phi*_*ipp 9

从一个实时网站复制我使用的HTML5在所有页面上都被验证为正确的HTML5,这要归功于这个片段(在这种情况下是PHP,但是对于所使用的任何语言,选项和逻辑都是相同的):

    $options = array(
        'hide-comments' => true,
        'tidy-mark' => false,
        'indent' => true,
        'indent-spaces' => 4,
        'new-blocklevel-tags' => 'article,header,footer,section,nav',
        'new-inline-tags' => 'video,audio,canvas,ruby,rt,rp',
        'new-empty-tags' => 'source',
        'doctype' => '<!DOCTYPE HTML>',
        'sort-attributes' => 'alpha',
        'vertical-space' => false,
        'output-xhtml' => true,
        'wrap' => 180,
        'wrap-attributes' => false,
        'break-before-br' => false,
    );

    $buffer = tidy_parse_string($buffer, $options, 'utf8');
    tidy_clean_repair($buffer);
    // Fix a tidy doctype bug
    $buffer = str_replace('<html lang="en" xmlns="http://www.w3.org/1999/xhtml">', '<!DOCTYPE HTML>', $buffer);
Run Code Online (Sandbox Code Playgroud)