LINUX.ORG.RU

markdown-it — парсер markdown с расширяемым синтаксисом

 , ,


5

3

Ключевая особенность нового парсера — простота расширения синтаксиса. При использовании маркдауна пользователь рано или поздно упирается в то, что чего-то не хватает и нужно делать HTML-вставки. В markdown-it можно добавлять новые элементы синтаксиса через плагины. В результате сохраняется безопасность сгенерированной HTML-разметки и нет необходимости использовать сложные валидаторы вроде owasp для защиты от XSS.

Парсер написан на javascript, и работает как в браузере, так и на node.js. Несмотря на язык программирования и заложенную гибкость, markdown-it имеет очень высокую скорость, уступая только скомпилированным вариантам на С.

Другой приятной особенностью парсера является следование спецификации CommonMark.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: ymn (всего исправлений: 2)

и чего все так носятся с этим Markdown? языки разметки, не основанные на XML, не имеют права существовать.

Lincor
()
Последнее исправление: Lincor (всего исправлений: 1)
Ответ на: комментарий от Lincor

языки разметки, не основанные на XML, не имеют права существовать.

Хоть ты всю жизнь читал только чистый xml и даже свои жирные вбросы на лор писал на нем же. Руками.

ptarh ★★★★★
()
Ответ на: комментарий от Lincor

языки разметки, не основанные на XML, не имеют права существовать.

Tell me more.

Jade, например, весьма крут :-)

Y ★★
()

Пора прикручивать на ЛОР.

anonymous
()
Ответ на: комментарий от Lincor

и чего все так носятся с этим Markdown? языки разметки, не основанные на XML, не имеют права существовать.

иди напиши 1000 страниц книги на docbook, удачи.

aktine
()
Ответ на: комментарий от mcFactor

я писал XHTML-документ более чем на пятнадцать экранов с обширными вставками MathML. расскажи мне, как я страдал, ага.
вообще всегда удивляли люди, у которых чтение и написание XML-документов вызывает какие-то затруднения. мне кажется, это какая-то болезнь.

Lincor
()
Ответ на: комментарий от Lincor

После Jade, HAML и пр. в сторону XML смотреть просто тошно. Даже JSON представляется чем-то поразительно удобным на фоне XML. А после использования XSLT < 2.0, XML начинаешь просто ненавидеть.

faiwer
()
Ответ на: комментарий от Lincor

Нет, это просто ты мазохист. Который хочет сделать свои извращённые фантазии нормой.

odii
()
Ответ на: комментарий от Lincor

15 экранов это какие-то жалкие листов 5 в формате А4. Так, маленький рефератик.

andrewzvn
()
Ответ на: Creole от Camel

Чем код лучше спецификации? Ну даже не знаю, так сходу и не ответишь.

Vit ★★★★★
() автор топика

Звучит вкусно.

В результате сохраняется безопасность сгенерированной HTML-разметки

А HTML-разметка в разметке (yo dawg) санитизируется, просто экранируется или вовсе не поддерживается?

anonymous
()

«При использовании маркдауна пользователь рано или поздно упирается в то, что чего-то не хватает и нужно делать HTML-вставки»

Ясень пень! маркдаун, имхо, достаточно унылое уг.

Почему люди не пользуют более совершеныне и продуманные языки вики разметки типа media-wiki ?!

сравните markdown c media-wiki и заройте уже это убогое маркдаун-мракобесие. ну серьезно. на гиториусе приходится оформлять маны в маркдауне. так бесит после медия-вики, что хоть от гита вовсе отказывайся.... >_<

Denjs
()
Ответ на: комментарий от anonymous

А HTML-разметка в разметке (yo dawg) санитизируется, просто экранируется или вовсе не поддерживается?

HTML «выключен» по умолчанию (все что не поддерживается - экранируется). Можно включить, но тогда каждый сам себе буратина, если потом через санитайзер не пропустит.

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

Vit ★★★★★
() автор топика
Ответ на: комментарий от Lincor

я писал XHTML-документ более чем на пятнадцать экранов с обширными вставками MathML

Ловите наркомана.

loz ★★★★★
()

Во! Годнота!

написан на javascript

И остальные реализации скоро подтянутся.

Hertz ★★★★★
()

markdown-it - это что за наезды на Шаттлворта?

vilisvir ★★★★★
()
Ответ на: комментарий от Lincor

расскажи мне, как я страдал, ага.

расскажи людям что проще проще и бысртее написать, в редакторе заметок, а потом читать (без визуализации):

<mtext><h1>некий текст</h1></mtext>

или

Это MD H1 заголовок
==================

mcFactor
()
Последнее исправление: mcFactor (всего исправлений: 2)
Ответ на: комментарий от mcFactor

<mtext>

это что? это зачем? MathML для разметки текстов не предназначен. он должен встраиваться в формат разметки текстов.

<h1>некий текст</h1>

некий текст
===========

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

Lincor
()
Последнее исправление: Lincor (всего исправлений: 2)

Нужна хорошая сишная библиотека, построенная на callback'ах, и биндинги к ней, а не это javascript'ное УГ.

anonymous
()
Ответ на: комментарий от Lincor

MathML для разметки текстов не предназначен

Отлично, но MD предназначем как раз для разметки текста.

первое короче

а если ни какой разметки не использовать, будет еще короче.

легче парсится

кто сказал?

и гораздо удобнее в наборе

продолжай, это забавно.

потому что не надо считать буквы

не надо считать буквы, надо либо выставить моноширинный фонт (который обязан быть установлен в любом случае), либо использовать

# H1 Heading

так что там про «первое короче»?

mcFactor
()
Ответ на: комментарий от mcFactor

Отлично, но MD предназначем как раз для разметки текста.

XHTML и другие форматы разметки текста на основе XML - тоже.

а если ни какой разметки не использовать, будет еще короче.

проблема только в том, что разметка нужна.

кто сказал?

я. опыт парсинга XML есть.

не надо считать буквы, надо либо выставить моноширинный фонт (который обязан быть установлен в любом случае)

постоянно копипастить текст из редактора в браузер и обратно?

либо использовать

# H1 Heading

так еще длиннее.

Lincor
()
Ответ на: комментарий от Lincor

я. опыт парсинга XML есть.

да, у меня тоже. это не значит что я готов пихать xml где попадя и нет. ты мне напоминаешь одного моего знакомого, съехавшего умом на БД, когда он убеждал что самый правильный путь хранения настроек приложения и логов - это устанавливать MySQL (на Windows компах) и все в нем хранить.

постоянно копипастить текст из редактора в браузер и обратно?

что копипастить?! куда? редактор редактирует текст, браузер (или специализированное приложение типа personal wiki) визуализирует текст. куда и что ты копипастаешь?!

так еще длиннее.

что длиннее?! поставить знак хэш длинее?!?!?!
# - и есть маркер H1.

mcFactor
()
Последнее исправление: mcFactor (всего исправлений: 1)
Ответ на: комментарий от mcFactor

# - и есть маркер H1.

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

самый правильный путь хранения настроек приложения и логов - это устанавливать MySQL (на Windows компах) и все в нем хранить

все правильно. только не MySQL, а какую нибудь облегченную БД специально для этой цели. саму базу можно хранить в XML, чтобы редактировать штатными средствами.

что копипастить?! куда? редактор редактирует текст, браузер (или специализированное приложение типа personal wiki) визуализирует текст. куда и что ты копипастаешь?!

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

это не значит что я готов пихать xml где попадя и нет

он везде «попадя». формат универсален и расширяем.

Lincor
()
Последнее исправление: Lincor (всего исправлений: 2)
Ответ на: комментарий от Stribog

ЛОЛ. Наверное тем, что заметно свежее, а владелец того репа был послан нахер за полный неадекват?

Vit ★★★★★
() автор топика
Ответ на: комментарий от Manhunt

Ну релизы уже были, теперь скорее с новосельем :)

Vit ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Вообще бесит, что все пастбины_для_мат.формул в основном используют LaTeX, который ещё учить/вспоминать надо, и не поддерживают такой интуитивный язык как ASCIIMathML

anonymous
()
Ответ на: комментарий от Vit

сходу нагуглил такую штуку (что там в середине не смотрел)

мож возьмете и добавите ваш парсер и remarkable и обновите тест.

думаю пользователи были бы благодарны

ZuBB ★★★★★
()
Ответ на: комментарий от Lincor

пятнадцать экранов

вот правильно, теперь понятно, без 15 экранов XML нормально не прочитать!

aktine
()
Ответ на: комментарий от ZuBB

Смысла нет возиться. Маркдаунит намного быстрее. От сравнения с еще десятью парсерами ничего не изменится. Но если сильно хочется - там есть более размернутый бенчмарк, куда можно добавлять имплементации.

Vit ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Имя не может быть тем, на чем основан код. 99.9% коммитов в ремаркабр делал я и еще один человек. Все остальное - микроправки ридми, которые при наличии претензий просто выпилятся. Конкретно от владельца старого репа там вообще один единственный коммит в ридми. В общем, посмотрите историю и статистику коммитов.

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

Vit ★★★★★
() автор топика

markdown-it имеет очень высокую скорость, уступая только скомпилированным вариантам на С.

а какие варианты тестировали? я потестировал на пару с рубишным kramdown, скорость одинаковая.

anonymous
()
Ответ на: комментарий от Lincor

все правильно. только не MySQL, а какую нибудь облегченную БД специально для этой цели. саму базу можно хранить в XML, чтобы редактировать штатными средствами.

вопросов более не имею, удачи.

mcFactor
()
Ответ на: комментарий от anonymous

По нормальному только яваскриптовые. С сишными трудно сравнивать, чтобы исключить время прогрева.

Но опыта написания быстрого кода у меня есть, это не первый проект.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

не, ну «работает на уровне kramdown» (который pure ruby, на минуточку) — это неплохой результат. оптимизированные, со вставками на сях (тот же redcarpet), работают раза в три-четыре быстрее и это можно легко сравнивать, «прогрев» тут не особо при чём.

anonymous
()
Ответ на: комментарий от anonymous

Если согласитесь поверить на слово - компилированный cmark в пять раз быстрее. Правильный бенчмарк строить не буду, времени нет.

Но когда речь идет о сравнении скорости, надо учитывать момент, что здесь развесистая система плагинов, а в остальных вариантах логика приколочена гвоздями. Если б я тоже гвоздями приколачивал, выжал бы наверное еще в 2-3 раза скорость.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.