通缉:命令行HTML5美化器[关闭]


75

通缉

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

输入项

乱码,难看的HTML5代码。可能是多个模板的结果。你不爱它,它不爱你。

输出量

纯净的美丽。该代码很好地缩进,具有足够的换行符,照顾它的空白。与其在Web浏览器中查看,不如直接在您的网站上显示代码。

嫌疑犯

  • 整洁的功能太多了(哎呀,它改变了我的doctype!),并且在HTML5中效果不佳。也许有一种方法可以使其合作而不改变任何东西
  • vim太少了。它只是缩进。我希望程序添加和删除换行符,并在标签内使用空格。

死或生!


这不是超级用户的问题吗?
Jonno_FTW 2010年

16
我会说您有合适的网站。不知道SU上有多少人实际使用HTML,更不用说HTML5了。
Tim Post

1
我遇到了同样的问题,最终写了一个新的Ruby库,不需要编译任何第三方工具(我很难让Tidy与Rails一起工作),并且只专注于HTML5,而不是XML,XHTML或HTML 4。它还不是完美的,但是在我使用它的所有项目中都运行良好。请看一看jarijokinen.com/html5-beautifier
Jari Jokinen

2
使用XHTML5,您可以做xmllint --format
Janus Troelsen,2013年

您还可以Monkeypatch HTML5多语言文档:echo '<!doctype html>'; (echo "<?xml version='1.0' ?>"; tail -n +2 < index.html) | xmllint --format - | sed -re 's/(<script[^>]*)\/>/\1><\/script>/g' | tail -n+2。这应该与第1行上doctype的输入文档一起使用,但不支持xml-prolog。输出相同的样式。
Janus Troelsen 2013年

Answers:


27

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

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


3
截至2014年7月,该项目似乎已被拖延了两年
ERADERMAN 2014年

2
截至2015年4月,它似乎还活着。尽管您仍然需要通过拉动git repo从源代码中构建二进制文件。
Parthian Shot 2015年

2
从2016年6月开始,您可以在OSX上使用Homebrew进行安装。
HellaMad

1
截至2017年7月,您可以apt-get install tidy使用Debian
djangonaut

19

我怀疑使用正确的命令行参数可以使代码整洁。

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

您可以指定一个任意doctype并添加新的block,inline和empty标签,并打开和关闭大量整洁的清洁选项。

根据您希望它“美化”的内容,您可能会得到不错的结果。如果它无法识别虚假元素,则它可能无法执行一些更高级的操作,例如重写html内容以消除虚假元素或将其组合。


14
粗略地猜测一下,tidy -as-xhtml --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --doctype "<!DOCTYPE HTML>" --break-before-br yes --sort-attributes alpha --vertical-space yes (免责声明-我没有使用html5,并且我只是通过猜测哪个是阻止/内联方式从w3schools.com/html5/html5_reference.asp复制了几个新标签到列表中,所以请进行适当调整。)
Stobor,2010年

这似乎是最好的选择。也对Stobor表示敬意!
blinry 2010年

这是一个好的开始,但还需要更多。例如,新的输入元素属性/值(type =“ date”)。
dave1010 2011年

2
我在这里有2个选项遇到了麻烦。--doctype "<!DOCTYPE HTML>"--sort-attributes alpha由于某些原因而无法正常工作
-Ankur

我还努力使工作整洁。在ubuntu 14.10上我得到的选项是:整洁-整洁标记no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags'article,header,footer'-new-inline-tags'video, audio,canvas,ruby,rt,rp'--break-before-br yes --sort-attributes alpha --vertical-space yes
aaaaaa

9

由于使用了此代码段(我使用的是PHP,但使用的任何语言的选项和逻辑都相同),所以我从一个真实的网站上复制了我使用的HTML5,该HTML5在所有页面上均被验证为正确的HTML5:

    $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);

<audio>使用使用空<source>标签的标签,我发现您还需要以下配置选项:'new-empty-tags' => 'source'
Wes Cossick 2014年

1
谢谢@WesC,我相应地编辑了答案。
菲利普2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.