Ищу: Командная строка HTML5 beautifier

В розыске

HTML5 beautifier, работающий под Linux.

вход

Искаженный, уродливый код HTML5. Возможно, результат нескольких шаблонов. Вы не любите это, это не любит вас.

Выход

Чистая красота. Код хорошо с отступом, имеет достаточно разрывов строк, заботится о его пробелах. Вместо того, чтобы просматривать его в веб-браузере, вы хотели бы отобразить код на своем веб-сайте напрямую.

Подозреваемые

  • Tidy делает слишком много (черт возьми, он меняет мой тип документа!), и он не очень хорошо работает с HTML5. Может быть, есть способ заставить его сотрудничать и ничего не менять?
  • vim делает слишком мало Это только отступы. Я хочу, чтобы программа добавляла и удаляла разрывы строк и играла с пробелами внутри тегов.

МЕРТВЫЙ ИЛИ ЖИВОЙ!

4 ответа

Решение

HTML Tidy был разветвлен w3c и теперь поддерживает проверку HTML5.

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

Я подозреваю, что приборка может работать с правильными параметрами командной строки.

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

Вы можете указать произвольный тип документа, добавить новый блок, встроенные и пустые теги, а также включить и отключить множество опций очистки tidy.

В зависимости от того, что вы хотите "украсить", вы, вероятно, можете получить приличные результаты. Вероятно, он не сможет сделать некоторые из более сложных вещей, таких как переписывание html-контента, чтобы исключить ложные элементы или объединить их, если он их не распознает.

Скопированный с живого веб-сайта, который я сделал, используя 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);

Если вы используете Haml в качестве вашего нанокфильтра, ваш html будет автоматически напечатан. Вы можете установить вывод html5 в качестве опции.

Другие вопросы по тегам