Конвертер HTML в Markdown JavaScript

Поиск библиотеки JavaScript, которая должна преобразовывать HTML-код в формат Markdown.

Он должен иметь следующие особенности:

  • конвертировать основные теги HTML в Markdown ( h1...6, pre, и codeт. д.)
  • сохранить код HTML, если он не имеет корреспондента в Markdown (например iframe)
  • работа на стороне сервера (NodeJS)
  • работа на стороне клиента (браузер)

Первые три пункта важны для меня, но любые рекомендации/предложения приветствуются.


Примеры

HTML                                    | Converted
----------------------------------------+---------------------------------
<h1>Hello World</h1>                    | # Hello World
----------------------------------------+---------------------------------
<h1 class="foo">Hello World</h1>        | <h1 class="foo">Hello World</h1>
----------------------------------------+---------------------------------
<p>Lorem ipsum</p>                      | Lorem ipsum
----------------------------------------+---------------------------------
<p data-something="foo">Lorem ipsum</p> | <p data-something="foo">Lorem ipsum</p>
----------------------------------------+---------------------------------
<img src="something">                   | ![](something)
----------------------------------------+---------------------------------
<a href="...">foo</a>                   | [foo](...)
----------------------------------------+---------------------------------
<a disabled="" href="...">foo</a>       | <a disabled="" href="...">foo</a>
Вы заинтересованы в варианте только на стороне сервера? Я не знаю ни одного, который является и тем, и другим, либо просто браузером, но я знаю один, который является серверной стороной.
@NickWilde Это было бы идеально. Если он работает на стороне сервера, он должен работать и на стороне клиента. Спасибо!
Я бы порекомендовал to-markdown на github. > Конвертер HTML в Markdown, написанный на JavaScript

Ответы (1)

Обычно мне очень нравится Pandoc для всех моих потребностей в преобразовании текстового формата. Однако он основан на Haskell, хотя у него есть простые варианты установки/исполнения для большинства ОС. Конечно, его нельзя очень хорошо запустить с помощью JavaScript. Конечно, вы можете что-то сделать с Node.js и потоками; но зачем беспокоиться, когда это уже сделано: Jandoc .

Jandoc делает все то же, что и Pandoc, но с (Node.js) оболочками JavaScript.

Установка немного сложная;

  1. Установите Node.js
  2. Установите платформу Haskell .
  3. Запустите приглашение cmd и выполните cabal update(это не обновляет кабалу, а только список исходных кодов пакета, чтобы обновить кабалу (при желании/необходимости) запустить cabal install cabal-install)
  4. командная строка: cabal install pandoc(это займет некоторое время)
  5. командная строка:npm install jandoc -g

Информация об API находится в файле Readme Jandoc .

Чтобы перейти к вашим требованиям:

  • конвертировать основные HTML-теги в Markdown (h1...6, pre, code и т. д.): Да
  • сохранить HTML-код, если он не имеет соответствия в Markdown (например, iframe): Да - при использовании опции -R/--parse-raw . Таким образом, для Jandoc через JavaScript API вы должны просто включить parseRaw: Trueаргумент в свой список опций.
  • работа на стороне сервера (Node.JS): Да
  • работа на стороне клиента (браузер): НЕТ. Не легко переносимый для использования в браузере.
Можно было бы использовать haste-compiler для преобразования Haskell в ECMAScript, но я сомневаюсь, что эта задача будет легкой.
Да, я уверен, что это можно сделать, но, честно говоря, просто поддерживать html-> md было бы намного проще просто сделать это с нуля с несколькими заменами регулярных выражений.
Привет, Ник, спасибо за ответ. Я скоро пересмотрю его, но я занят экзаменами на степень бакалавра.
@NickWilde Если бы это было возможно с помощью простых регулярных выражений, я бы выбрал именно этот путь. Я тестирую Haskell.