1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Showdown

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

![Showdown][sd-logo]

Статус сборки: Linux Статус сборки: Windows Тесты Browserstack Версия npm Версия Bower Пожертвование


Showdown — это JavaScript-конвертер Markdown в HTML, основанный на работах Джона Грубера. Showdown можно использовать как на клиентской стороне (в браузере), так и на серверной стороне (с использованием Node.js).

Живой ДЕМО

Проверьте живую демонстрацию здесь: http://demo.showdownjs.com/

Как вы знаете, ShowdownJS — это бесплатная библиотека, которая всегда будет бесплатной. Однако поддержка и улучшение этой библиотеки требуют времени и денег.

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

Лицензия

ShowdownJS версии 2.0 выпущена под лицензией MIT. Прошлые версии выпущены под лицензией BSD.

Кто использует Showdown (или форк)

Установка

Загрузка tarball

Вы можете скачать последний релиз tarball напрямую с [релизов][releases].

Bower

bower install showdown

npm (серверная сторона)

npm install showdown

NuGet package

PM> Install-Package showdownjs

NuGet Packages доступны здесь.

CDN

Вы также можете использовать одну из нескольких доступных 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 успешно протестирован в следующих браузерах:

  • Firefox 1.5 и 2.0
  • Chrome 12.0
  • Internet Explorer 6 и 7
  • Safari 2.0.4
  • Opera 8.54 и 9.10
  • Netscape 8.1.2
  • Konqueror 3.5.4

По теории, Showdown должен работать во всех браузерах, поддерживающих ECMA 262 3rd Edition (JavaScript 1.5). Конвертер может даже работать в объектах, которые не являются веб-браузерами, таких как Acrobat. Без гарантий.

Совместимость с Node.js

Showdown предназначен для работы на любой поддерживаемой версии Node.js (см. график выпусков Node.js). Код может работать с предыдущими версиями Node.js, но нет гарантий на его совместимость.

Версия Legacy

Если вы ищете версию Showdown v<1.0.0, вы можете найти её в [ветке legacy][legacy-branch].

Изменения

Вы можете проверить полный [журнал изменений][changelog].

Расширенная документация

Просмотрите наши [страницы wiki][wiki] для примеров и более подробной документации.

Быстрый пример

Node

var showdown  = require('showdown'),
    converter = new showdown.Converter(),
    text      = '# привет, markdown!',
    html      = converter.makeHtml(text);

Браузер

var converter = new showdown.Converter(),
    text      = '# привет, markdown!',
    html      = converter.makeHtml(text);

Вывод

Оба примера должны выводить...

<h1 id="приветmarkdown">привет, markdown!</h1>

Опции

Вы можете изменять некоторое поведение конвертера Showdown через опции.

Установка опций

Опции могут быть установлены:

Глобально

Установка глобальной опции влияет на все экземпляры Showdown

showdown.setOption('optionKey', 'value');

Локально

Установка локальной опции влияет только на указанный объект Converter. Локальные опции могут быть установлены:

  • через конструктор

    var converter = new showdown.Converter({optionKey: 'value'});
  • через метод setOption()

    var converter = new showdown.Converter();
    converter.setOption('optionKey', 'value');

Получение опции

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

getOption()

// Глобально
var myOption = showdown.getOption('optionKey');

// Локально
var myOption = converter.getOption('optionKey');

getOptions()

// Глобально
var showdownGlobalOptions = showdown.getOptions();

// Локально
var thisConverterSpecificOptions = converter.getOptions();

Получение значений по умолчанию

Вы можете получить значения по умолчанию для Showdown с помощью:

var defaultOptions = showdown.getDefaultOptions();

Допустимые опции

  • omitExtraWLInCodeBlocks: (boolean) [по умолчанию false] Пропуск завершающего новой строки в блоках кода. Например:

    Это:

    <code><pre>var foo = 'bar';
    </pre></code>

    Превращается в это:

    <code><pre>var foo = 'bar'</pre></code>
  • noHeaderId: (boolean) [по умолчанию false] Отключение автоматического генерирования ID заголовков. Установка на true переопределяет prefixHeaderId

  • customizedHeaderId: (boolean) [по умолчанию false] Использование текста в фигурных скобках как ID заголовка. (начиная с версии v1.7.0) Пример:

    ## Sample header {real-id}     будет использовать real-id как id
  • ghCompatibleHeaderId: (boolean) [по умолчанию false] Генерация ID заголовков, совместимых со стилем GitHub (пробелы заменяются дефисами, а большинство недопустимых символов удаляется) (начиная с версии v1.5.5)

  • prefixHeaderId: (string/boolean) [по умолчанию false] Добавление префикса к сгенерированным ID заголовков. Передача строки добавит эту строку к ID заголовка. Установка на true добавит общую "section" префикс.

  • rawPrefixHeaderId: (boolean) [по умолчанию false] Установка этого параметра на true предотвратит изменение префикса Showdown. Это может привести к некорректному ID (например, если используется символ " в префиксе). Ничего не делает, если prefixHeaderId установлено на false. (начиная с версии v 1.7.3)

  • rawHeaderId: (boolean) [по умолчанию false] Удаление только пробелов, ' и " из сгенерированных ID заголовков (включая префиксы), заменяя их дефисами (-). ВНИМАНИЕ: Это может привести к некорректному ID (начиная с версии v1.7.3)

  • headerLevelStart: (integer) [по умолчанию 1] Установка начального уровня заголовков. Например, установка этого на 3 означает что

    # foo

    будет парситься как

    <h3>foo</h3>
  • parseImgDimensions: (boolean) [по умолчанию false] Включение поддержки установки размеров изображений внутри markdown-синтаксиса. Примеры:

    ![foo](foo.jpg =100x80)     простой, предполагает единицы измерения в пикселях
    ![bar](bar.jpg =100x*)      устанавливает высоту на "auto"
    ![baz](baz.jpg =80%x5em)  Изображение с шириной 80% и высотой 5em
  • simplifiedAutoLink: (boolean) [по умолчанию false] Включение автоматической ссылки на URL. Это значит что:

    some text www.google.com

    будет парситься как

    <p>some text <a href="www.google.com">www.google.com</a>
  • literalMidWordUnderscores: (boolean) [по умолчанию false] Включение этого параметра прекратит Showdown от интерпретации нижних подчеркиваний в середине слов как <em> и <strong> и вместо этого они будут восприниматься как буквальные нижние подчеркивания. Пример:

    some text with__underscores__in middle

    будет парситься как

    <p>some text with<span class="underline">underscores</span>in middle</p>
  • strikethrough: (логический тип boolean) [по умолчанию false] Включение поддержки синтаксиса зачеркивания. ~~strikethrough~~ как <del>strikethrough</del>

  • tables: (логический тип boolean) [по умолчанию false] Включение поддержки таблиц. Пример:

    | h1    |    h2   |      h3 |
    |:------|:-------:|--------:|
    | 100   | [a][1]  | ![b][2] |
    | *foo* | **bar** | ~~baz~~ |

    Подробнее см. wiki

  • tablesHeaderId: (логический тип boolean) [по умолчанию false] Если активировано, добавляет свойство ID к тегам заголовков таблиц.

  • ghCodeBlocks: (логический тип boolean) [по умолчанию true] Включение поддержки стиля GFM для блоков кода.

  • tasklists: (логический тип boolean) [по умолчанию false] Включение поддержки GFM для списков задач. Пример:

     - [x] This task is done
     - [ ] This is still pending
  • smoothLivePreview: (логический тип boolean) [по умолчанию false] Предотвращает странные эффекты в реальном времени при просмотре из-за неполного входа

  • smartIndentationFix: (логический тип boolean) [по умолчанию false] Пытается умно исправить проблемы отступов, связанные с шаблонами ES6 в середине кода.

  • disableForced4SpacesIndentedSublists: (логический тип boolean) [по умолчанию false] Отключение требования отступа подсписков на 4 пробела для их вложения, фактически возвращаясь к старому поведению, где достаточно было 2 или 3 пробела. (начиная с версии v1.5.0)

  • simpleLineBreaks: (логический тип boolean) [по умолчанию false] Парсинг переносов строк как <br>, без необходимости двух пробелов в конце строки (начиная с версии v1.5.1)

    a line  
    wrapped in two

    превращается в:

    <p>a line<br>
    wrapped in two</p>
  • requireSpaceBeforeHeadingText: (логический тип boolean) [по умолчанию false] Обязывает добавление пробела между # и текстом заголовка (начиная с версии v1.5.3)

  • ghMentions: (логический тип boolean) [по умолчанию false] Включение поддержки упоминаний GitHub, которые создают ссылку на имя пользователя. (начиная с версии v1.6.0)

  • ghMentionsLink: (строка) [по умолчанию https://github.com/{u}] Изменяет ссылку, созданную упоминаниями. Showdown заменит {u} на имя пользователя. Только применяется, если опция ghMentions включена. Пример: @tivie с опцией ghMentionsOption, установленной на //mysite.com/{u}/profile приведёт к <a href="//mysite.com/tivie/profile">@tivie</a>

  • encodeEmails: (логический тип boolean) [по умолчанию true] Включение закодированных электронных адресов через использование символьных сущностей, преобразуя ASCII-электронные адреса в эквивалентные десятичные сущности. (начиная с версии v1.6.1)

    ЗАМЕЧАНИЕ: До версии 1.6.1 электронные адреса всегда были закодированы через десятичное и шестнадцатеричное кодирование.

  • openLinksInNewWindow: (логический тип boolean) [по умолчанию false] Открытие всех ссылок в новых окнах (добавлением атрибута target="_blank" к тегам <a>) (начиная с версии v1.7.0)

  • backslashEscapesHTMLTags: (логический тип boolean) [по умолчанию false] Поддержка экранирования HTML-тегов. Пример: \&lt;div&gt;foo\&lt;/div&gt; (начиная с версии v1.7.2)

  • эмоции: (логический тип boolean) [по умолчанию false] Включение поддержки эмодзи. Пример: this is a :smile: emoji Для получения информации о доступных эмодзи, см. https://github.com/showdownjs/showdown/wiki/Emojis (начиная с версии v.1.8.0)*

  • подчеркивание: (логический тип boolean) [по умолчанию false] ЭКСПЕРИМЕНТАЛЬНАЯ ФУНКЦИОНАЛЬНОСТЬ Включает поддержку подчеркивания. Синтаксис использует двойные или тройные нижние подчеркивания пример: __подчеркнутый текст__. При включенном этом параметре нижнее подчеркивание больше не будет парситься как <em> и <strong>.

  • эллипсис: (логический тип boolean) [по умолчанию true] Заменяет три точки на эллипс Unicode.

  • полнаяHTMLДокументация: (логический тип boolean) [по умолчанию false] Выдает полный HTML-документ, включая теги <html>, <head> и <body> вместо HTML-фрагмента. (начиная с версии 1.8.5)

  • метаданные: (логический тип boolean) [по умолчанию false] Включает поддержку метаданных документа (определенные в начале документа между ««« и »»» или между --- и ---). (начиная с версии 1.8.5)

    var conv = new showdown.Converter({metadata: true});
    var html = conv.makeHtml(someMd);
    var metadata = conv.getMetadata(); // возвращает объект с метаданными документа
  • разделениесоседнихцитат: (логический тип boolean) [по умолчанию false] Разделяет соседние цитаты. (начиная с версии 1.8.6)

  • болееукрашенныйстиль: (логический тип boolean) [по умолчанию false] Добавляет некоторые полезные классы для CSS-стилизации. (начиная с версии 2.0.1)

    • Задачи-листы: Добавляет класс task-list-item-complete завершенным задачам в GFM-задачах-листах.

ЗАМЕЧАНИЕ: Пожалуйста, обратите внимание, что до версии 1.6.0, все эти опции находятся по умолчанию в режиме Отключено в командной строке.

Вкусовые особенности

Вы также можете использовать вкусовые особенности или предварительно настроенные наборы опций, чтобы автоматически установить правильные опции, так что showdown будет работать как популярные вкусы markdown.

В настоящее время доступны следующие вкусы:

  • original - оригинальный вкус markdown согласно спецификации John Gruber
  • vanilla - базовый вкус showdown (как от версии 1.3.1)
  • github - GFM (GitHub Flavored Markdown)

Глобально

showdown.setFlavor('github');

Инстанция

converter.setFlavor('github');

Клиентская утилита командной строки

Showdown также приходит с встроенной клиентской утилитой командной строки. Вы можете проверить страницу wiki-cli для получения более подробной информации.

Интеграция с AngularJS

Проект ShowdownJS также предоставляет бесшовную интеграцию с AngularJS через плагин. Пожалуйста, посетите https://github.com/showdownjs/ngShowdown для получения более подробной информации.

Интеграция с TypeScript

Если вы используете TypeScript, возможно, вам захочется использовать типы из DefinitelyTyped.

Интеграция с SystemJS/JSPM

Интеграция с SystemJS может быть получена через сторонний "system-md" плагин.

Интеграция с VueJS

Чтобы использовать ShowdownJS как Vue компонент быстро, вы можете проверить vue-showdown.

Уязвимость XSS

Showdown не санкционирует входные данные. Это сделано намеренно, поскольку markdown полагается на это для корректного парсинга некоторых особенностий в HTML. Однако, это значит, что внедрение XSS вполне возможно.

Пожалуйста, обратитесь к статье wiki-xss-vulnerability для получения более подробной информации.

Расширения

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 должны быть установлены.

  1. запустите npm install.
  2. запустите npx grunt build (увидеть Gruntfile.js). Этот командный запрос: 1. Очищает репозиторий. 2. Проверяет качество кода (JSHint и ESLint). 3. Запускает тесты. 4. Создает распределённый и минифицированный файлы в папке dist.

Тесты

Набор тестов доступен, который требует Node.js. После того, как Node установлен, выполните следующую команду из корня проекта для установки зависимостей:

npm install

После установки тесты могут быть запущены из корня проекта с помощью:

npm test

Новые случаи тестирования легко можно добавить. Создайте файл markdown (завершающийся .md), содержащий markdown для тестирования. Создайте файл .html с точно таким же названием. Он будет автоматически тестироваться при выполнении тестов с помощью mocha.

Вклад

Если вы хотите сделать вклад, пожалуйста, прочитайте следующий быстрый руководство.

Хотите новую функцию?

Вы можете запросить новую функцию, отправив заявку. Если вы хотите реализовать новую функцию, смело откройте Pull Request.

Pull Requests (PRs)

PRs очень полезны. Однако, перед тем как вы отправите свой pull request, рассмотрите следующие рекомендации:

  • Поиск GitHub для открытого или закрытого Pull Request, связанный с вашим вкладом. Вы не хотите дублировать усилия.

  • Когда вы отправляете PRs, которые меняют код, сделайте ваши изменения в новом git-ветке, основанной на develop:

    git checkout -b my-fix-branch develop
  • Выполните полный набор тестов перед отправкой и убедитесь, что все тесты проходят (естественно =P).

  • Попробуйте следовать нашим правилам стиля кода. Нарушение этих правил препятствует тому, чтобы PR прошёл тесты.

  • Избегайте исправления нескольких проблем в одном pull request. Лучше всего создать несколько маленьких PRs вместо одного большого трудноразборчивого.

  • Если PR представляет новую функцию или исправляет проблему, пожалуйста, добавьте соответствующий тестовый случай.

  • Мы используем конвенционные заметки коммитов для генерации changelogs, которые следуют конвенционному спецификации changelog. Очень полезно, если ваши заметки коммитов соответствуют этим Руководствам по коммитам.

  • Не забудьте добавить своё имя в файл CREDITS.md. Мы любим давать заслуженную благодарность.

  • Если мы предлагаем изменения, то:

    • Сделайте необходимые обновления.
    • Повторно выполните весь набор тестов, чтобы убедиться, что все тесты проходят.
    • Обновите свою ветку и форсируйте push к вашему репозиторию GitHub (это обновит ваш Pull Request):
    git rebase develop -i
    git push origin my-fix-branch -f
  • После того, как ваш pull request был объединён, вы можете безопасно удалить свою ветку.

Если у вас есть время для участия в этом проекте, мы чувствуем себя обязанными дать вам за это благодарность. Эти правила позволяют нам быстрее просмотреть ваш PR и дадут вам соответствующую благодарность в вашем профиле GitHub. Мы заранее благодарим вас за ваш вклад!

Присоединение к команде

Мы ищем членов для помощи в поддержании Showdown. Пожалуйста, посмотрите этот вопрос, чтобы выразить интерес или прокомментировать эту запись.

Благодарности

Полный список благодарностей доступен по адресу https://github.com/showdownjs/showdown/blob/master/CREDITS.md

Showdown поддерживается:
webstorm

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Showdown — это JavaScript-библиотека, которая реализует функцию преобразования Markdown в HTML. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-Showdown.git
git@api.gitlife.ru:oschina-mirror/mirrors-Showdown.git
oschina-mirror
mirrors-Showdown
mirrors-Showdown
master