首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建showdown.js标记扩展

如何创建showdown.js标记扩展
EN

Stack Overflow用户
提问于 2013-12-31 22:54:25
回答 2查看 5.5K关注 0票数 4

使用下面的代码,我得到了工作输出:

代码语言:javascript
复制
<html>
  <head>
    <script type="text/javascript" src="/js/showdown.js"></script>
  </head>
  <body>
    <script type="text/javascript">
      var converter = new Showdown.converter();
      alert(converter.makeHtml('*test* abc'));
    </script>
  </body>
</html>

返回<p><em>test</em> abc</p>

我现在想增加一个扩展。github页面建议,这可以通过以下方法来完成:

代码语言:javascript
复制
<script src="src/extensions/twitter.js" />
var converter = new Showdown.converter({ extensions: 'twitter' });

但是,修改我的代码以:

代码语言:javascript
复制
<html>
  <head>
    <script type="text/javascript" src="/js/showdown.js"></script>
    <script type="text/javascript" src="/js/twitter.js"></script>
  </head>
  <body>
    <script type="text/javascript">
      var converter = new Showdown.converter({ extensions: 'twitter' });
      alert(converter.makeHtml('*test* abc'));
    </script>
  </body>
</html>

产生错误

代码语言:javascript
复制
"Uncaught Extension 'undefined' could not be loaded.  It was either not found or is not a valid extension."

添加以下代码(如滤波实例下面所示)

代码语言:javascript
复制
var demo = function(converter) {
  return [
    // Replace escaped @ symbols
    { type: 'lang', function(text) {
      return text.replace(/\\@/g, '@');
    }}
  ];
}

产生错误Uncaught SyntaxError: Unexpected token (

我想创建一个类似于这个https://github.com/rennat/python-markdown-oembed的扩展来解释一个![video](youtube_link),但是还不清楚如何开始添加这种支持。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-31 22:59:40

在最后一个块中,在'lang‘之后有一个逗号,后面紧跟一个函数。这是无效的json。

编辑

看来自述文件是错误的。我必须传递一个字符串“twitter”的数组。

代码语言:javascript
复制
var converter = new Showdown.converter({extensions: ['twitter']});
converter.makeHtml('whatever @meandave2020');
// output "<p>whatever <a href="http://twitter.com/meandave2020">@meandave2020</a></p>"

我提交了一个请求来更新这个。

票数 3
EN

Stack Overflow用户

发布于 2016-09-29 11:48:00

我们编写扩展的方式已经改变了,我在下面的过滤器示例中找到了一些帮助:http://codepen.io/tivie/pen/eNqOzP

代码语言:javascript
复制
showdown.extension("example", function() {
  'use strict';
  return [
    {
      type: 'lang',
      filter: function(text, converter, options) {
        var mainRegex = new RegExp("(^[ \t]*:>[ \t]?.+\n(.+\n)*\n*)+", "gm");
        text = text.replace(mainRegex, function(match, content) {
          content = content.replace(/^([ \t]*):>([ \t])?/gm, "");
          var foo = converter.makeHtml(content);
          return '\n<blockquote class="foo">' + foo + '</blockquote>\n';
        });
        return text;
      }
    }
  ]
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20863978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档