Как стать автором
Обновить

Комментарии 14

Прочитал, но пока не понял, чем это удобнее обычного

cat path/to/file

видимо на винде нету `cat`

В смысле нету?

скрин

давно под виндой не сидел, сколько всего поменялось

Нативная команда type

Согласен, способ сомнительный. Я бы использовал cygwin или babun + hq или pup или xml2 (нужное подчеркнуть). Но статья имеет место быть.

Вывод в консоль содержимого файла - это не конечная цель моего скрипта. Я хочу написать что-то вроде простого анализатора некоторых значений атрибутов HTML-элементов. Если скрипт найдет ошибку в значении атрибута, он должен по моей задумке вывести фрагмент HTML-дерева, в котором содержится ошибка. Для этого я экспериментирую с выводом в консоль.

  1. Чем это лучше, чем просто текст в стиле: "на такой-то строке, в таком-то тэге, у вас неправильный атрибут"?

  2. Зачем печатать что-то непонятное (дерево тэгов), если можно просто напечатать сам HTML. Он вполне себе читаемый.

  1. Возможно, что и ничем. Но мне хочется реализовать оба способа, чтобы понять, какой из них лучше. У меня мало опыта, поэтому я ориентируюсь на известные мне инструменты. Например, на валидатор HTML от W3C: там выводят и сообщение об ошибке вида "ошибка в такой-то строке, в такой-то колонке" и одновременно выводят фрагмент HTML-файла с подсветкой ошибки. Очень наглядно, мне кажется.

  2. Я пишу инструмент для код-ревью учащихся. Вы бы посмотрели, что они там городят в файлах! Файлы учащихся вовсе не такие читаемые, как у опытных кодеров. В статье я взял очень простой пример, чтобы продемонстрировать принцип. На HTML можно написать то еще чудовище.

Это интересно. Как я понял, вы разрабатываете формат, с помощью которого можно представить, в частности, файл на языке HTML в более простом для понимания виде. Я себе ставлю задачу попроще, не такую универсальную. Я хочу выводить в консоль HTML-дерево (или нужный его фрагмент) только с нужной мне в данный момент информацией. Например, я хочу проанализировать все значения атрибутов с именем class у всех HTML-элементов, у которых они есть.

Я не буду для этого выводить все значения всех атрибутов. Я выведу только названия HTML-элементов (текстовые узлы и узлы-комментарии я планирую позже тоже убрать из вывода, в этой статье они лишь для примера, для изучения возможностей библиотеки), а далее выведу только значения атрибутов class. Другие атрибуты пока что вообще не буду выводить, так как в данный момент они мне неинтересны.

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

То есть я уже использую что-то вроде вашего формата, только вывожу в консоль информацию в нужной мне части, а не всю.

А какие инструменты (программы, окружение) нужны, чтобы работать с продемонстрированным вами кодом (это, вроде бы, JavaScript, да?) на своем компьютере? Ведь вашей песочницей для реальных задач пользоваться, наверное, неудобно.

Скажем, у меня есть файлы на языке HTML для анализа. Я пишу скрипт на языке PowerShell для анализа файла и запускаю этот скрипт в программе-оболочке «PowerShell», после чего в консоли вижу результаты анализа, сообщения об ошибках или сообщение об отсутствии ошибок.

А как работать с вашим кодом? Как я понимаю, нужна установленная среда выполнения «Node.js». Она у меня установлена. А еще что?

Лучше всего, конечно, портировать JS реализацию на C# или PS. Но можно и на nodejs сделать скрипт, который будет парсить входной поток через mol_tree2, странсформировать как в коде выше, и выплёвывать в выходной.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории