diff options
| -rw-r--r-- | public/js/extra.js | 34 | ||||
| -rw-r--r-- | public/js/index.js | 5 | ||||
| -rw-r--r-- | public/js/pretty.js | 1 | ||||
| -rwxr-xr-x | public/vendor/md-toc.js | 11 | 
4 files changed, 48 insertions, 3 deletions
diff --git a/public/js/extra.js b/public/js/extra.js index ef1f7e35..12342f09 100644 --- a/public/js/extra.js +++ b/public/js/extra.js @@ -341,6 +341,7 @@ function generateToc(id) {          'level': 3,          'top': -1,          'class': 'toc', +        'ulClass': 'nav',          'targetId': id      });      if (target.text() == 'undefined') @@ -460,6 +461,26 @@ function deduplicatedHeaderId(view) {      }  } +function renderTOC(view) { +    var tocs = view.find('.toc').toArray(); +	for (var i = 0; i < tocs.length; i++) { +        var toc = $(tocs[i]); +        var id = 'toc' + i; +        toc.attr('id', id); +        var target = $('#' + id); +        target.html(''); +        new Toc('doc', { +            'level': 3, +            'top': -1, +            'class': 'toc', +            'targetId': id +        }); +        if (target.text() == 'undefined') +            target.html(''); +        target.replaceWith(target.html()); +    } +} +  function scrollToHash() {      var hash = location.hash;      location.hash = ""; @@ -623,7 +644,18 @@ var mathjaxPlugin = new Plugin(          return '<span class="mathjax raw">' + match[0] + '</span>';      }  ); +//TOC +var tocPlugin = new Plugin( +    // regexp to match +    /^\[TOC\]$/, + +    // this function will be called when something matches +    function (match, utils) { +        return '<div class="toc"></div>'; +    } +);  md.use(youtubePlugin);  md.use(vimeoPlugin);  md.use(gistPlugin); -md.use(mathjaxPlugin);
\ No newline at end of file +md.use(mathjaxPlugin); +md.use(tocPlugin);
\ No newline at end of file diff --git a/public/js/index.js b/public/js/index.js index 046c5407..03f5e587 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -86,6 +86,10 @@ var supportReferrals = [      {          text: '',          search: '![]()' +    }, +    { +        text: '[TOC]', +        search: '[]'      }  ];  var supportExternals = [ @@ -1876,6 +1880,7 @@ function updateViewInner() {      finishView(ui.area.view);      autoLinkify(ui.area.view);      deduplicatedHeaderId(ui.area.view); +    renderTOC(ui.area.view);      generateToc('toc');      generateToc('toc-affix');      generateScrollspy(); diff --git a/public/js/pretty.js b/public/js/pretty.js index ad5655d6..ff393cac 100644 --- a/public/js/pretty.js +++ b/public/js/pretty.js @@ -6,6 +6,7 @@ $(document.body).show();  finishView(markdown);  autoLinkify(markdown);  deduplicatedHeaderId(markdown); +renderTOC(markdown);  generateToc('toc');  generateToc('toc-affix');  smoothHashScroll(); diff --git a/public/vendor/md-toc.js b/public/vendor/md-toc.js index e46afad9..abdd9f56 100755 --- a/public/vendor/md-toc.js +++ b/public/vendor/md-toc.js @@ -10,6 +10,7 @@          this.options = options || {};          this.tocLevel = parseInt(options.level) || 0;          this.tocClass = options['class'] || 'toc'; +        this.ulClass = options['ulClass'];          this.tocTop = parseInt(options.top) || 0;          this.elChilds = this.el.children;          if (!this.elChilds.length) return; @@ -80,7 +81,10 @@                          this._tempLists.length = this._tempLists.length - y;                      } else {                          this._tempLists.push(this._elTitleElement); -                        this.tocContent += '<ul class="nav">'; +                        if (this.ulClass) +                            this.tocContent += '<ul class="' + this.ulClass + '">'; +                        else +                            this.tocContent += '<ul>';                      }                  } else {                      this.tocContent += '</li>'; @@ -93,7 +97,10 @@                  }              }          } -        this.tocContent = '<ul class="nav">' + this.tocContent + '</ul>'; +        if (this.ulClass) +            this.tocContent = '<ul class="' + this.ulClass + '">' + this.tocContent + '</ul>'; +        else +            this.tocContent = '<ul>' + this.tocContent + '</ul>';      };      Toc.prototype._showToc = function () {  | 
