showdownjs / showdown

A bidirectional Markdown to HTML to Markdown converter written in Javascript
http://www.showdownjs.com/
MIT License
14.26k stars 1.56k forks source link

showdown not extension from beginning when call for 2'nd time #784

Open mojtaba82 opened 4 years ago

mojtaba82 commented 4 years ago

For example I want convert all "markdown" string to "showdown" but first match become "showdown1" second match become "showdown2" and so on. First time I run converter.makeHtml(text); everything is OK but for second time I run this code it become from for example 3. please consider this minimal code for better understanding

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="UTF-8"/>
  <script type="text/javascript" src="showdown-1.9.1/showdown.js"></script>
  <script type="text/javascript">
    var myext = function() {
      var num = 0;
      return [
        {
          type: 'lang',
          filter: function (text, converter, options) {
            var regex = /markdown/gm;
            return text.replace(regex, function(match){
              num++;
              return 'showdown' + num;
            });
          }
        }
      ]
    }
    showdown.extension('myext', myext);
  </script>
  <script>
    function run() {
  var text = document.getElementById('sourceTA').value,
      target = document.getElementById('targetDiv'),
      converter = new showdown.Converter({ extensions: ['myext'] }),
      html = converter.makeHtml(text);

    target.innerHTML = html;
}
  </script>
</head>
<body>

  <textarea id="sourceTA" rows="10" cols="82"></textarea>
  <hr/>
  <button id="runBtn" onClick="run()">Convert</button>
  <hr/>
  <div id="targetDiv"></div>

</body>
</html>