Comments 14
Прочитал, но пока не понял, чем это удобнее обычного
cat path/to/file
видимо на винде нету `cat`
Согласен, способ сомнительный. Я бы использовал cygwin
или babun
+ hq
или pup
или xml2
(нужное подчеркнуть). Но статья имеет место быть.
Вывод в консоль содержимого файла - это не конечная цель моего скрипта. Я хочу написать что-то вроде простого анализатора некоторых значений атрибутов HTML-элементов. Если скрипт найдет ошибку в значении атрибута, он должен по моей задумке вывести фрагмент HTML-дерева, в котором содержится ошибка. Для этого я экспериментирую с выводом в консоль.
Чем это лучше, чем просто текст в стиле: "на такой-то строке, в таком-то тэге, у вас неправильный атрибут"?
Зачем печатать что-то непонятное (дерево тэгов), если можно просто напечатать сам HTML. Он вполне себе читаемый.
Возможно, что и ничем. Но мне хочется реализовать оба способа, чтобы понять, какой из них лучше. У меня мало опыта, поэтому я ориентируюсь на известные мне инструменты. Например, на валидатор HTML от W3C: там выводят и сообщение об ошибке вида "ошибка в такой-то строке, в такой-то колонке" и одновременно выводят фрагмент HTML-файла с подсветкой ошибки. Очень наглядно, мне кажется.
Я пишу инструмент для код-ревью учащихся. Вы бы посмотрели, что они там городят в файлах! Файлы учащихся вовсе не такие читаемые, как у опытных кодеров. В статье я взял очень простой пример, чтобы продемонстрировать принцип. На HTML можно написать то еще чудовище.
Как насчёт более формального варианта представления XML?
! DOCTYPE html
html
head
meta @ charset \utf-8
title \Название страницы
body
-- \ содержимое страницы
p \Текст.
Это интересно. Как я понял, вы разрабатываете формат, с помощью которого можно представить, в частности, файл на языке HTML в более простом для понимания виде. Я себе ставлю задачу попроще, не такую универсальную. Я хочу выводить в консоль HTML-дерево (или нужный его фрагмент) только с нужной мне в данный момент информацией. Например, я хочу проанализировать все значения атрибутов с именем class
у всех HTML-элементов, у которых они есть.
Я не буду для этого выводить все значения всех атрибутов. Я выведу только названия HTML-элементов (текстовые узлы и узлы-комментарии я планирую позже тоже убрать из вывода, в этой статье они лишь для примера, для изучения возможностей библиотеки), а далее выведу только значения атрибутов class
. Другие атрибуты пока что вообще не буду выводить, так как в данный момент они мне неинтересны.
В другой раз мне захочется проанализировать значения другого атрибута HTML-элементов. Тогда я выведу в консоль значения только нужных атрибутов, а остальные скрою. И так далее.
То есть я уже использую что-то вроде вашего формата, только вывожу в консоль информацию в нужной мне части, а не всю.
Простота не только в понимании, но и в обработке. Вот, смотрите, как добиться нужного вам результата:
А какие инструменты (программы, окружение) нужны, чтобы работать с продемонстрированным вами кодом (это, вроде бы, JavaScript, да?) на своем компьютере? Ведь вашей песочницей для реальных задач пользоваться, наверное, неудобно.
Скажем, у меня есть файлы на языке HTML для анализа. Я пишу скрипт на языке PowerShell для анализа файла и запускаю этот скрипт в программе-оболочке «PowerShell», после чего в консоли вижу результаты анализа, сообщения об ошибках или сообщение об отсутствии ошибок.
А как работать с вашим кодом? Как я понимаю, нужна установленная среда выполнения «Node.js». Она у меня установлена. А еще что?
PowerShell: обход и визуализация HTML-дерева из файла