Showdown - это JavaScript Markdown для HTML Converter, основанный на оригинальных работах Джона Грубера. Showdown может быть использован стороной клиента (в браузере) или на стороне сервера (с node.js).
Проверьте живую демонстрацию здесь: http://demo.showdownjs.com/
Как вы знаете, Showdownjs - это бесплатная библиотека, и она останется бесплатной навсегда. Однако поддержание и улучшение библиотеки стоит времени и денег.
Если вам нравится наша работа и вы нашли нашу библиотеку полезной, пожалуйста, пожертвуйте через PayPal! Ваш вклад будет высоко оценен и поможет мне продолжать развивать эту удивительную библиотеку.
Showdownjs V 2.0 выпускается по лицензии MIT. Предыдущие версии выпускаются под BSD.
Вы можете скачать последний выпуск Tarball непосредственно из выпусков.
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Пакеты Nuget можно найти здесь.
Вы также можете использовать один из нескольких доступных CDN:
Jsdelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJS
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
UNPKG
https://unpkg.com/showdown/dist/showdown.min.js
Примечание . Замените <version tag>
на реальную версию полной длины, которая вас интересует, например, 1.9.0
Showdown была успешно протестирована с:
Теоретически, Showdown будет работать в любом браузере, который поддерживает ECMA 262 3 -е издание (JavaScript 1.5). Сам конвертер может даже работать в вещах, которые не являются веб -браузерами, такими как Acrobat. Не обещаю.
Showdown предназначен для работы над любой поддерживаемой версией node.js (см. Расписание выпуска Node.js. Код может работать с предыдущими версиями node.js, но не предназначено никаких условий, чтобы убедиться, что он это делает.
Если вы ищете Showdown V <1.0.0, вы можете найти его в устаревшем филиале .
Вы можете проверить полную изменку
Проверьте наши страницы вики на наличие примеров и более подробную документацию.
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
Оба примера должны вывести ...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
Вы можете изменить часть поведения Showdown по умолчанию через параметры.
Параметры могут быть установлены:
Установка опции «глобального» влияет на все экземпляры вскрытия
showdown . setOption ( 'optionKey' , 'value' ) ;
Установка опции «локальный» влияет только на указанный объект преобразователя. Локальные параметры могут быть установлены:
через конструктор
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
через метод setoption ()
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
Showdown предоставляет 2 метода (как локальных, так и глобальных) для извлечения предыдущих параметров.
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
Вы можете получить параметры Showdown по умолчанию с помощью:
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmiteXtrawlincodeblocks : (Boolean) [по умолчанию false] Опустите Trailing Newline в кодовом блоке. Бывший:
Этот:
< code > < pre > var foo = 'bar';
</ pre > </ code >
Становится следующим:
< code > < pre > var foo = 'bar'; </ pre > </ code >
noHeaderid : (логическое) [по умолчанию false] Отключить автоматическую генерацию идентификаторов заголовка. Настройка на True переопределять префиксерд
industrialedheaderid : (boolean) [по умолчанию false] Используйте текст в кудрявых скобках в качестве идентификатора заголовка. (С момента v1.7.0) Пример:
## Sample header {real-id} will use real-id as id
GHCompatibleHeaderID : (Boolean) [по умолчанию false] Создать идентификаторы заголовка , совместимые со стилем Github (пространства заменяются набрать
PrefixHeaderID : (String/Boolean) [по умолчанию false] Добавить префикс в сгенерированные идентификаторы заголовка. Передача строки будет префиксом этой строки к идентификатору заголовка. Настройка в true
добавит универсальный раздел 'префикс.
rawprefixheaderid : (boolean) [по умолчанию false] Настройка этой опции на True предотвратит Showdown от изменения префикса. Это может привести к узоловым идентификаторам (если, например, «char используется в префиксе). Не имеет никакого влияния, если префиксерд устанавливается на false. (Поскольку v 1.7.3)
Rawheaderid : (Boolean) [по умолчанию false] Удалить только пространства »и« из сгенерированных идентификаторов заголовка (включая префиксы), заменив их на тире (-). Предупреждение: это может привести к нетроформированным идентификаторам (так как v1.7.3)
HeaderLevelStart : (Integer) [по умолчанию 1] Установите начальный уровень заголовка. Например, установление этого на 3 означает, что
# foo
будет анализироваться как
< h3 > foo </ h3 >
Parseimgdimensions : (Boolean) [по умолчанию false] Включите поддержку для установки размеров изображения из синтаксиса Markdown. Примеры:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
Упрощенная autolink : (boolean) [по умолчанию false] Включение этой опции будет включать автоматическое связывание с URL. Это означает, что:
some text www.google.com
будет анализироваться как
< p > some text < a href =" www.google.com " > www.google.com </ a >
excudEdtrailingpunctuationfromurls : (boolean) [по умолчанию false] Этот вариант исключает следующий пунктуация из URL -адресов с автолизацией. Пунктуация исключена : . ! ? ( )
. Применяется только в случае упрощения, установленной на true
.
LiteralMidWordDerscores : (Boolean) [по умолчанию false] Включение этого остановит вскрытие от интерпретации подчеркиваний в середине слов как <em>
и <strong>
и вместо этого рассматривать их как литеральные подчеркивания.
Пример:
some text with __ underscores __ in middle
будет анализироваться как
< p > some text with__underscores__in middle </ p >
LiteralMidWordasterisks : (Boolean) [по умолчанию false] Включение этого остановит вскрытие от интерпретации звездочек в середине слов как <em>
и <strong>
и вместо этого рассматривать их как буквальные звездочки.
Strikethrough : (логическое) [по умолчанию false] Включить поддержку синтаксиса Strikethrough. ~~strikethrough~~
как <del>strikethrough</del>
Таблицы : (логическое) [по умолчанию false] Включите поддержку синтаксиса таблиц. Пример:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
Смотрите вики для получения дополнительной информации
TableSheaderid : (Boolean) [по умолчанию false] Если включен добавляет свойство идентификатора в теги заголовков таблицы.
GHCODEBLOCKS : (BOOLEAN) [По умолчанию TRUE] Включить поддержку стиля блока кода GFM.
Слисты задач : (логический) [по умолчанию false] Включите поддержку списков задач GFM. Пример:
- [x] This task is done
- [ ] This is still pending
SmoothLivePreview : (Boolean) [по умолчанию false] предотвращает странные эффекты в живых предварительных просмотрах из -за неполного ввода
SmartIndentationFix : (Boolean) [По умолчанию FALSE] пытается умно исправить проблемы вдавливания, связанные с строками шаблона ES6, в середине кода с отступом.
Disableforced4spacesIndentsSublists : (Boolean) [по умолчанию false] отключает требование о том, что они были вложены в 4 -й пространства, чтобы они были вложены, эффективно возвращаясь к старому поведению, где достаточно 2 или 3 пространства. (С момента v1.5.0)
Simple LineLineBreaks : (Boolean) [ <br>
по умолчанию.
a line
wrapped in two
превращается в:
< p > a line < br >
wrapped in two </ p >
repplysepacebeforeHeadingText : (Boolean) [по умолчанию false] делает добавление пространства между #
и текстом заголовка обязательным (с V1.5.3)
GHMentions : (Boolean) [По умолчанию false] включает github @mentions, которые ссылаются на упомянутое имя пользователя (с v1.6.0)
ghmentionslink : (String) [по умолчанию https://github.com/{u}
] изменяет ссылку, сгенерированную @mentions. Showdown заменит {u}
на имя пользователя. Применяется только в том случае, если опция Ghmentions включена. Пример: @tivie
с Ghmentionionsoption установлена на //mysite.com/{u}/profile
приведет к <a href="//mysite.com/tivie/profile">@tivie</a>
Encodeemails : (Boolean) [True Default] Включите адреса электронной почты, кодируясь через использование символов, преобразующие адреса электронной почты ASCII в свои эквивалентные десятичные цели. (с V1.6.1)
ПРИМЕЧАНИЕ. До версии 1.6.1 электронные письма всегда будут запутаны через DEC и HEX -кодирование.
OpenLinkSinnewWindow : (boolean) [по умолчанию false] Откройте все ссылки в новых Windows (добавив атрибут target="_blank"
в <a>
теги) (с v1.7.0)
BackSlashescapeshtmltags : (Boolean) [По умолчанию false] Поддержка для выхода из HTML. Пример: <div>foo</div>
(с v1.7.2)
Emoji : (логическое) [по умолчанию false] включить поддержку эмодзи. Пример: this is a :smile: emoji
для получения дополнительной информации о доступных смайках, см .
Подчеркнуть : (логический) [по умолчанию false] Экспериментальная функция Включение поддержки подчеркивания. Синтаксис является двойным или тройным подчеркиванием Ex: __underlined word__
. При включении этой опции подставки больше не являются синтаксиями в <em>
и <strong>
.
Ellipsis : (Boolean) [по умолчанию True] заменяет три точки с помощью символа Ellipsis Unicode.
Complethtmldocument : (Boolean) [false по умолчанию выводит полный документ HTML, включая <html>
, <head>
и <body>
теги 'вместо фрагмента HTML. (с V.1.8.5)
Метаданные : (логическое) [по умолчанию false] Включить поддержку метаданных документов (определено в верхней части документа между «««
и »»»
или между ---
и ---
). (с V.1.8.5)
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
SplitAdjacentBlockquotes : (Boolean) [по умолчанию false] Разделил соседние блоки блока. (С момента V.1.8.6)
Morestiling : (логический) [по умолчанию false] добавляет несколько полезных классов для стиля CSS. (с v2.0.1)
task-list-item-complete
в выполненные задачи в элементах в списках задач GFM.Примечание . Обратите внимание, что до версии 1.6.0 все эти параметры отключены по умолчанию в инструменте CLI.
Вы также можете использовать ароматы или пресеты для автоматического установления правильных параметров, чтобы Showdown ведет себя как популярные ароматы Markdown.
В настоящее время доступны следующие ароматы:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
Showdown также поставляется в комплекте с инструментом интерфейса командной строки. Вы можете проверить страницу CLI Wiki для получения дополнительной информации
Project Showdownjs также обеспечивает беспроблемную интеграцию с AngularJS через «плагин». Пожалуйста, посетите https://github.com/showdownjs/ngshowdown для получения дополнительной информации.
Если вы используете TypeScript, вы, возможно, хотите использовать типы из определенности
Интеграция с SystemJS может быть получена через сторонний плагин «System-MD».
Чтобы быстро использовать Showdownjs в качестве компонента VUE, вы можете проверить Vue-Showdown.
Showdown не дезинфицирует вход. Это по дизайну, так как Markdown полагается на него, чтобы позволить определенным функциям быть правильно проанализированы в HTML. Это, однако, означает, что инъекция XSS вполне возможна.
Пожалуйста, обратитесь к уязвимости XSS статьи Wiki Markdown (и как ее смягчить) для получения дополнительной информации.
Showdown позволяет загружать дополнительные функции с помощью расширений. (Вы можете найти список известных расширений Showdown здесь). Вы также можете найти шаблон, чтобы создать свои собственные расширения в этом репозитории
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
Создание вашего клона репозитория легко.
Пререквизиты: Node.js V12, NPM и NPX должны быть установлены.
Запустите npm install
.
Запустите npx grunt build
(см. Gruntfile.js
). Эта команда:
dist
. Доступен набор тестов, которые требуют узла.js. Как только узел установлен, запустите следующую команду из корневого проекта для установки зависимостей:
npm install
После установки тесты могут быть запущены из корня проекта, используя:
npm test
Новые тестовые примеры могут быть легко добавлены. Создайте файл Markdown (заканчивая в .md
), который содержит отметки для тестирования. Создайте файл .html
с таким же именем. Он будет автоматически протестирован, когда тесты будут выполнены с помощью mocha
.
Если вы хотите внести свой вклад, прочитайте следующее быстрое руководство.
Вы можете запросить новую функцию, отправив проблему. Если вы хотите внедрить новую функцию, не стесняйтесь выпустить запрос на вытяжение.
PRS потрясающие. Однако, прежде чем отправить запрос на привлечение рассмотрим следующие рекомендации:
Поиск GitHub для открытого или закрытого запроса на тягу, который относится к вашему представлению. Вы не хотите дублировать усилия.
При выпуске PRS, которые изменяют код, внесите изменения в новом филиале GIT на основе разработки :
git checkout -b my-fix-branch develop
Запустите полный набор тестов перед отправкой и убедитесь, что все тесты пройдут (очевидно = P).
Попробуйте следовать нашим правилам стиля кодирования . Разрушение их предотвращает пройти тесты.
Воздержитесь от исправления нескольких проблем в одном и том же запросе на притяжение. Предпочтительно открывать несколько небольших PRS вместо одного трудно просмотреть большие.
Если PR представляет новую функцию или исправит проблему, добавьте соответствующий тестовый пример .
Мы используем традиционные примечания к коммитированию, чтобы сгенерировать изменение изменяемой спецификации. Это чрезвычайно полезно, если ваши сообщения о коммите придерживаются этих руководящих принципов.
Не забудьте добавить свое имя в файл cutrits.md. Нам нравится отдать должное, если бы это было связано.
Если мы предлагаем изменения, тогда:
git rebase develop -i
git push origin my-fix-branch -f
После того, как ваш запрос на притяжение объединится, вы можете безопасно удалить свою филиал.
Если у вас есть время, чтобы внести свой вклад в этот проект, мы чувствуем себя обязанными, чтобы вы получили кредит за него. Эти правила позволяют нам быстрее пересматривать ваш PR и предоставит вам соответствующий кредит в вашем профиле GitHub. Заранее благодарим вас за ваш вклад!
Мы ищем участников, чтобы помочь поддерживать вскрытие. Пожалуйста, посмотрите этот вопрос, чтобы выразить интерес или прокомментировать эту записку.
Полный кредитный список по адресу https://github.com/showdownjs/showdown/blob/master/credits.md
Showdown оснащен: