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

OSCHINA-MIRROR/sundaibo-showdown

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

Шоудаун — это конвертер Markdown в HTML на JavaScript, основанный на оригинальных работах Джона Грубера.

Шоудаун можно использовать на стороне клиента (в браузере) или на стороне сервера (с NodeJs).

Онлайн-демонстрация

Онлайн-демонстрацию можно посмотреть здесь: http://demo.showdownjs.com/.

Пожертвования

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

Лицензия

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

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

  • GoogleCloudPlatform;
  • Meteor;
  • Stackexchange (форк как PageDown);
  • docular;
  • md-page;
  • QCObjects;
  • и некоторые другие...

Установка

Скачать архив

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

Bower

bower install showdown

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

npm install showdown

NuGet-пакет

PM> Install-Package showdownjs

NuGet-пакеты можно найти здесь.

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.

Совместимость с браузерами

Шоудаун успешно протестирован с:

  • 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

Шоудаун протестирован с node 0.8 и 0.10. Однако он должен работать и с предыдущими версиями, такими как node 0.6.

Устаревшая версия

Если вы ищете шоудаун v<1.0.0, вы можете найти его в устаревшей ветке.

Журнал изменений

Полный журнал изменений.

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

Примеры и более подробную документацию можно найти на вики-страницах.

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

Node

var showdown  = require('showdown'),
    converter = new showdown.Converter(),
    text      = '# hello, markdown!',
    html      =
``` ### Браузер
```js
var converter = new showdown.Converter(),
    text      = '# hello, markdown!',
    html      = converter.makeHtml(text);

Вывод

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

<h1 id="hellomarkdown">hello, markdown!</h1>
## Опции

Вы можете изменить поведение showdown по умолчанию с помощью опций.

### Настройка опций
Опции можно установить:

#### Глобально
Установка «глобальной» опции влияет на все экземпляры showdown:
```js
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] Отключить автоматическое создание идентификаторов заголовков. При установке значения true переопределяет prefixHeaderId.

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

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

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

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

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

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

# foo

будет проанализировано как

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

    ![foo](foo.jpg =100x80) простой, предполагает, что единицы измерения указаны в px
    ![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>
    ``` **Использование тегов `<body>` вместо фрагмента HTML (начиная с версии 1.8.5)**
    
  • metadata: (boolean) [по умолчанию false] Включить поддержку метаданных документа (определённых в верхней части документа между ««« и »»» или между --- и ---). (начиная с версии 1.8.5)

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

Примечание: обратите внимание, что до версии 1.6.0 все эти параметры по умолчанию отключены в инструменте cli.

Варианты

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

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

  • original — оригинальный вариант markdown, как в спецификации Джона Грубера;
  • vanilla — базовый вариант showdown (начиная с v1.3.1);
  • github — GFM (GitHub Flavored Markdown).

Глобальный

showdown.setFlavor('github');

Экземпляр

converter.setFlavor('github');

Инструмент CLI

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

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

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

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

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

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

Интеграцию с SystemJS можно получить через сторонний плагин «system-md» (https://github.com/guybedford/system-md).

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

Чтобы быстро использовать ShowdownJS в качестве компонента Vue, вы можете проверить vue-showdown (https://vue-showdown.js.org/).

Уязвимость XSS

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

Пожалуйста, обратитесь к вики-статье «Уязвимость XSS в 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. После установки узла запустите следующую команду из корня проекта, чтобы установить зависимости:

npm install

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

npm test

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

Вклад

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

Нужна функция?

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

Запросы на вытягивание (PR)

PR — это здорово. Однако перед отправкой запроса на вытягивание рассмотрите следующие рекомендации:

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

  • При отправке PR, которые изменяют код, внесите изменения в новую ветку git, основанную на master:

    git checkout -b my-fix-branch master
    ``` Документацию (например, README.md) можно изменять напрямую в основной ветке.
    
  • Перед отправкой запустите полный набор тестов и убедитесь, что все тесты пройдены (очевидно =P).

  • Старайтесь следовать нашим правилам стиля кодирования. Их нарушение не позволит PR пройти тесты.

  • Воздержитесь от исправления нескольких проблем в одном запросе на вытягивание. Лучше открыть несколько небольших PR вместо одного большого, сложного для проверки.

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

  • Мы используем заметки о фиксации для создания журнала изменений. Будет очень полезно, если ваши сообщения о фиксации будут соответствовать руководству по фиксации AngularJS Git.

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

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

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

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

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

Кредиты

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

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

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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