摊牌是基于约翰·格鲁伯(John Gruber)的原始作品的HTML转换器的JavaScript标记。摊牌可以使用客户端(在浏览器中)或服务器端(带有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
注意:用您对Eg 1.9.0
感兴趣的实际全长版本替换<version tag>
摊牌已成功测试:
从理论上讲,摊牌将在任何支持ECMA 262第三版(JavaScript 1.5)的浏览器中起作用。转换器本身甚至可能在不是网络浏览器的事物中工作,例如Acrobat。没有保证。
摊牌旨在在任何受支持的node.js版本上使用(请参阅node.js发行时间表。代码可以与node.js的先前版本一起使用,但没有做出任何贴心以确保它的功能。
如果您正在寻找摊牌v <1.0.0,则可以在传统分支中找到它。
您可以检查完整的更改程序
检查我们的Wiki页面以获取示例和更深入的文档。
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' ) ;
摊牌提供2种方法(本地和全局)来检索先前的集合选项。
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
您可以使用以下方式获得摊牌的默认选项
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmitextrawlIncodeBlocks :( boolean)[默认错误]省略了代码块中的尾随newline。前任:
这:
< code > < pre > var foo = 'bar';
</ pre > </ code >
变成了:
< code > < pre > var foo = 'bar'; </ pre > </ code >
Noheaderid :(布尔值)[默认错误]禁用自动生成标题ID。设置为TRUE覆盖Prefixheaderid
CustomizedHeaderId :(布尔值)[默认错误]将卷曲括号中的文本用作标头ID。 (既然v1.7.0)示例:
## Sample header {real-id} will use real-id as id
ghcompatibleheaderid :( boolean)[默认false]生成与github样式兼容的标头ID(空间被破折号替换,并删除了一堆非字母数字字符) (因为v1.5.5)
prefixheaderid :( string/boolean)[默认错误]在生成的标头ID中添加前缀。传递字符串将前缀该字符串到标题ID。设置为true
将添加通用的“部分”前缀。
RAWPREFIXHEADERID :( boolean)[默认错误]将此选项设置为true将阻止摊牌修改前缀。这可能会导致畸形的ID(例如,如果“前缀中使用char”。
RAWHEADERID :( boolean)[默认错误]仅删除空格,并且“从生成的标头ID(包括前缀)中,用dashes( - )。警告:这可能会导致畸形ID (因为v1.7.3)
headerLevelStart :( integer)[默认1]设置标题启动级别。例如,将此设置为3表示
# foo
将被解析为
< h3 > foo </ h3 >
parseimgdimensions :( boolean)[默认错误]启用了从Markdown语法中设置图像尺寸的支持。示例:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink :( boolean)[默认错误]打开此选项将启用自动链接到URL。这意味着:
some text www.google.com
将被解析为
< p > some text < a href =" www.google.com " > www.google.com </ a >
DefkudetrailingPunctuationFromurls :( boolean)[默认错误]此选项将尾随标点符号排除在自动链接URL中。标点符号不包括: . ! ? ( )
。仅当简化的autolink选项设置为true
时才适用。
literalmidwordunderscores :( boolean)[默认错误]打开此操作将停止摊牌,从单词中间解释为<em>
和<strong>
,而是将它们视为字面的下划线。
例子:
some text with __ underscores __ in middle
将被解析为
< p > some text with__underscores__in middle </ p >
lintalmidwordasterisks :(布尔值)[默认错误]打开此操作将停止摊牌,从单词中间解释为<em>
和<strong>
,而是将它们视为字面的星号。
罢工:(布尔)[默认错误]启用对罢工语法的支持。 ~~strikethrough~~
AS <del>strikethrough</del>
表:(布尔值)[默认错误]启用对表语法的支持。例子:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
有关更多信息,请参见Wiki
tableSheaderId :( boolean)[默认错误]如果启用启用将ID属性添加到表标头标签。
ghcodeblocks :(布尔值)[默认为true]启用对GFM代码块样式的支持。
任务列表:(布尔值)[默认错误]启用对GFM任务清单的支持。例子:
- [x] This task is done
- [ ] This is still pending
SmoothlivePreview :( boolean)[默认错误]由于输入不完整而导致实时预览中的奇怪效果
smartIndentationFix :( boolean)[默认错误]试图在缩进代码中智能解决与ES6模板字符串有关的凹痕问题。
disableforced4spaceSindentedSublists :( boolean)[默认错误]禁用了将订阅者缩进4个空间以嵌套的订阅者的要求,从而有效地恢复到2或3个空间足够的旧行为。 (由于v1.5.0)
SimpleLineBreaks :( boolean)[默认错误]解析行的断裂如<br>
,而无需在行末端需要2个空间(自v1.5.1)
a line
wrapped in two
变成:
< p > a line < br >
wrapped in two </ p >
需要spaceBeforeheadText :( boolean)[默认错误]使#
和标题文本强制性之间添加一个空间(因为v1.5.3)
ghmentions :(布尔值)[默认错误]启用github @entrions,链接到所述用户名(自v1.6.0)
GhmentionsLink :(String)[默认https://github.com/{u}
]更改@Mentions生成的链接。摊牌将用用户名替换{u}
。仅在启用Ghmentions选项时适用。示例: @tivie
with ghmentionsoption设置为//mysite.com/{u}/profile
将导致<a href="//mysite.com/tivie/profile">@tivie</a>
encodeemails :( boolean)[默认为true]启用电子邮件地址通过使用字符实体编码,将ASCII电子邮件地址转换为其等效小数实体。 (由于v1.6.1)
注意:在版本1.6.1之前,电子邮件将始终通过DEC和十六进制编码来混淆。
OpenLinkSinNewwindow :( boolean)[默认false]打开新Windows中的所有链接(通过将属性target="_blank"
添加到<a>
标签中) (因为v1.7.0)
backslashescapeshtmltags :( boolean)[默认false]支持HTML标签逃脱。例如: <div>foo</div>
(由于v1.7.2)
表情符号:(布尔值)[默认错误]启用表情符号支持。例如: this is a :smile: emoji
有关可用表情符号的更多信息,请参见https://github.com/showdownjs/showdown/wiki/emojis (自v.1.8.0起)
下划线:(布尔值)[默认错误]实验功能可以支持下划线。语法是双重或三重下指数: __underlined word__
。启用了此选项,下划线不再分析<em>
和<strong>
。
省略号:(布尔值)[默认为true]将三个点替换为省略号的unicode字符。
完整的Htmldocument :( boolean)[默认错误]输出一个完整的HTML文档,包括<html>
, <head>
和<body>
标签,而不是HTML片段。 (自v.1.8.5以来
元数据:(布尔值)[默认错误]启用对文档元数据的支持(定义在«««
and »»»
之间或---
和 - 和---
)之间的文档顶部。 (自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)[默认错误]拆分相邻的块块块。(自v.1.8.6)
Morestyling :(布尔值)[默认错误]为CSS样式添加了一些有用的类。 (由于v2.0.1)
task-list-item-complete
添加到GFM任务列表中的完成任务项目中。注意:请注意,在版本1.6.0之前,所有这些选项默认情况下在CLI工具中被禁用。
您还可以使用口味或预设自动设置正确的选项,因此摊牌的行为就像流行的Markdown口味一样。
目前,可用以下口味:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
摊牌还与命令行接口工具捆绑在一起。您可以检查CLI Wiki页面以获取更多信息
Showdownjs项目还通过“插件”与AngularJS无缝集成。请访问https://github.com/showdownjs/ngshowdown了解更多信息。
如果您正在使用Typescript
与SystemJS集成可以通过第三方“ System-MD”插件获得。
要快速使用Showdownjs作为VUE组件,您可以检查Vue-showdown。
摊牌不会消毒输入。这是通过设计,因为Markdown依靠它允许将某些功能正确解析为HTML。但是,这意味着XSS注入非常有可能。
请参阅Wiki文章Markdown的XSS漏洞(以及如何减轻它)以获取更多信息。
摊牌允许通过扩展加载其他功能。 (您可以在此处找到已知摊牌扩展名的列表)您还可以找到一个样板,以在此存储库中创建自己的扩展名
< 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' ] } ) ;
构建存储库的克隆很容易。
预先Quesite:Node.js V12,NPM和NPX必须安装。
运行npm install
。
运行npx grunt build
(请参阅Gruntfile.js
)。此命令:
dist
文件夹中创建可分布和缩小的文件。 有一套需要node.js的测试套件。安装节点后,将以下命令从项目root运行以安装依赖项:
npm install
一旦安装,可以使用:
npm test
可以轻松添加新的测试用例。创建一个Markdown文件(以.md
结尾),其中包含要测试的标记。创建一个完全相同的名称的.html
文件。当使用mocha
执行测试时,它将自动测试。
如果您想贡献,请阅读以下快速指南。
您可以通过提交问题请求新功能。如果您想实现新功能,请随时发出拉动请求。
PR很棒。但是,在提交拉动请求之前,请考虑以下准则:
搜索github查看与您的提交有关的打开或封闭请求请求。您不想重复努力。
发出更改代码的PR时,请根据开发在新的GIT分支中进行更改:
git checkout -b my-fix-branch develop
在提交之前运行完整的测试套件并确保所有测试通过(显然= P)。
尝试遵循我们的编码样式规则。打破它们可以防止PR通过测试。
避免在同一拉的请求中解决多个问题。最好打开多个小PR,而不是很难审查大型PR。
如果PR引入新功能或解决问题,请添加适当的测试用例。
我们使用常规的提交注释来生成遵循常规ChangElog规格的更改程序。如果您的提交消息遵守这些提交指南,这将非常有帮助。
不要忘记将您的名称添加到Credits.md文件中。我们喜欢给予信用。
如果我们建议更改,那么:
git rebase develop -i
git push origin my-fix-branch -f
合并拉动请求后,您可以安全地删除分支。
如果您有时间为这个项目做出贡献,我们会感到您有义务为此获得信誉。这些规则使我们能够更快地审查您的公关,并在您的GitHub个人资料中为您提供适当的信用。我们预先感谢您的贡献!
我们正在寻找会员来帮助维持摊牌。请参阅此问题以对此说明表示兴趣或评论。
https://github.com/showdownjs/showdown/blob/master/master/credits.md上的完整信用列表
摊牌由: