Комментарии 17
Интересно было бы увидеть реализацию парсинга текста статьи и отображение ее в консоле
Можно увидеть детали в исходниках

Основная часть здесь
var parser = new DOMParser();
var el = parser.parseFromString(text, 'text/html');

var txt = [];

txt.push('Article: ' + article.n);
txt.push(' ');

el.documentElement.querySelector('div.post__text').childNodes.forEach((e) => {
  let t = '';
  let needLineBreak = false;

  if (e.nodeType == 3)
      t = e.wholeText;
  else {
    var tagName = e.tagName;
    if (['P', 'DIV', 'B', 'I', 'H1', 'H2', 'H3', 'H4', 'H5', 'SPAN', 'A'].indexOf(tagName) >= 0)
      t = e.innerText;
    else if (['PRE'].indexOf(tagName) >= 0) 
      e.querySelector('code').innerText.split('\n').forEach((s) => txt.push(s));
    else if (['UL', 'OL'].indexOf(tagName) >= 0)
      e.querySelectorAll('li').forEach((s) => {
                                    txt.push(' - ' + s.innerText);
                                    txt.push(' ');
                                });

    needLineBreak = (['P', 'DIV', 'BR', 'H1', 'H2', 'H3', 'H4', 'H5', 'PRE', 'UL', 'OL'].indexOf(tagName) >= 0);
  }

  t = t.replace(/(^\s+|\s+$)/gs, '');
  if (t)
    txt.push(t);

  if (needLineBreak && txt[txt.length - 1] != ' ')
    txt.push(' ');
});


В результате массив txt содержит строки для вывода на консоль. Сам вывод реализуется библиотекой, нам остаётся только вызвать term.echo(string_value)

Можно немного облегчить способ запуска скрипта через bookmarklet.

Надо еще картинки в ASCII-арт переводить, а то скучно без картинок

Firefox 76 ругнулся на строку t = t.replace(/(^\s+|\s+$)/gs, ''); — некорректный флаг регулярки. Это мне надо обновиться, или скрипт только для Хрома?

Можно заменить на t = t.replace(/(^\s+|\s+$)/g, ''); где-то прочитал что флаг s поддерживается в основных браузерах с 2018-ого, а перепроверять не стал.

Обновил на git.

Это мне надо обновиться, понял — Firefox его поддерживает только начиная с 78 версии (т.е. с июня текущего года).

Не хватает открытия статьи по айдишнику, но это, вероятно, не сложно сделать.
Спасибо за исходник!
Интересно)
Кстати, неплохо бы было, если бы сам Хабр такое внедрил.

Если планируете дорабатывать, тогда предлагаю:
— сделать нумерацию статей или переход по ID (показывается, например, в консоли перед названием статьи в скобках)
— зачеркнутый текст выводить с пометкой или что-то другое придумать к ниму (он никак не выделяется в консоли)
Оно не представляет ценности и никто не будет в реальной жизни подобного использовать.

Только в качестве развлечения и как дань прошлому, когда из консоли линксом бродил по просторам.

А так конечно идей можно много придумать. Например автодополнение уже фактически из коробки есть, надо только докрутить.
Точно, только здесь (для смеха) концепция файловой системы.

Было бы интересно добавить драйвер файловой системы, чтобы можно было подмонтировать /dev/hbr1 на /var/habr и бродить по ней. Почти что дропбокс получается.

Хабр плохо на концепцию файловой системы ложится. Популярные ФС предполагают единую иерархию, и единый путь к каждому файлу, а хабр, где к одной и той же статье можно перейти через автора, хаб, топ, ключевые слова, и ещё хз как, плохо сюда выкладывается.


Но! Вот sql парсер зашёл бы очень неплохо)

Вполне себе укладывается. Если не забывать о существовании hard и symbolic links на файловой системе.

Это пользователи ленивы что-бы правильно организовавывать множественные иерархии.

Хотя некоторое время назад читал о новых типах, когда организация идёт по тэгам, в том числе автоматическим. Например на фотографии определяются категории объектов и/или имена участников и к одной и той же фотографии можно добраться несколькими путями.

Но! Вот sql парсер зашёл бы очень неплохо)
Мне кажется гораздо больше пользы было бы если сделать хорошую категоризацию статей. Даже без AI, если будет инструмент, сообщество сможет за вменяемое время справится с задачей.

Геймефикацию подтянуть, типа за статью плюс в карму, а если при проверки выявилось что схалтурил — пять в минус. Статью в неделю на человека, через полгода все будут проинвентаризованны, если человек пятьсот подключаться. Потом можно уже будет и по результатам тренинга и автоматом обрабатывать.

Существенно повысился бы уровень поиска и советов по подобным статьям.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.