Skip to content

Commit 69d8f68

Browse files
aubergine10aubergine10
aubergine10
authored and
aubergine10
committed
Marked: Add anchors to headings - jshint/jshint#2938
Custom renderer for heading tags will add anchors to all headings in rendered markdown content. Anchors are slug-like representations of the heading text, same format as GFM. Code from https://github.com/chjj/marked#overriding-renderer-methods (MIT license) Might need some CSS tweaks but just wanted to see if the code change was acceptable first.
1 parent 601e394 commit 69d8f68

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

plugins/variables.js

+18-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,23 @@ var readOptions = require("./util/read-options");
1010
var translateFencedCode = require("./util/fenced-code");
1111
var optionsSrc = __dirname + "/../res/jshint/src/options.js";
1212

13+
/**
14+
* Marked renderer that adds anchors to headings
15+
* https://github.com/chjj/marked#overriding-renderer-methods
16+
*/
17+
var renderer = new marked.Renderer();
18+
19+
renderer.heading = function (text, level) {
20+
var escapedText = text.toLowerCase().replace(/[^\w]+/g, '-');
21+
22+
return '<h'+level+'>'+
23+
'<a name="'+escapedText+'" class="anchor" href="#'+escapedText+'">'+
24+
'<span class="header-link"></span>'+
25+
'</a>'+text+
26+
'</h'+level+'>';
27+
};
28+
29+
1330
var pkg = require(path.join(
1431
__dirname, "..", "res", "jshint", "package.json")
1532
);
@@ -36,7 +53,7 @@ module.exports = function (site, handlebars) {
3653
var partialPattern = /^(.*)\.html$/i;
3754

3855
handlebars.registerHelper("markdown", function (input) {
39-
return new handlebars.SafeString(marked(input));
56+
return new handlebars.SafeString(marked(input, {renderer: renderer}));
4057
});
4158

4259
fs.readdirSync("partials").forEach(function(filename) {

res/jshint

Submodule jshint deleted from b554ffe

0 commit comments

Comments
 (0)