@@ -3,6 +3,24 @@ var hljs = require('highlight.js');
3
3
var sanitizeHtml = require ( 'sanitize-html' ) ;
4
4
var htmlWhitelistPost = require ( './htmlWhitelistPost.json' ) ;
5
5
var renderer = new marked . Renderer ( ) ;
6
+ var blockRenderers = [
7
+ 'blockquote' ,
8
+ 'html' ,
9
+ 'list' ,
10
+ 'paragraph' ,
11
+ 'table'
12
+ ] ;
13
+
14
+ function sanitize ( html ) {
15
+ return sanitizeHtml ( html , htmlWhitelistPost ) ;
16
+ }
17
+
18
+ // Sanitize the output from the block level renderers
19
+ blockRenderers . forEach ( function ( type ) {
20
+ renderer [ type ] = function ( ) {
21
+ return sanitize ( marked . Renderer . prototype [ type ] . apply ( renderer , arguments ) ) ;
22
+ } ;
23
+ } ) ;
6
24
7
25
// Automatically generate an anchor for each header
8
26
renderer . heading = function ( text , level ) {
@@ -12,18 +30,14 @@ renderer.heading = function (text, level) {
12
30
var name = escapedText ;
13
31
var html = '<h' + level + '>' ;
14
32
html += '<a name="' + name + '"></a>'
15
- html += text ;
33
+ html += sanitize ( text ) ;
16
34
html += '<a href="#' + name + '" class="anchor">' ;
17
35
html += '<i class="fa fa-link"></i>' ;
18
36
html += '</a>' ;
19
37
html += '</h' + level + '>' ;
20
38
return html ;
21
39
} ;
22
40
23
- renderer . html = renderer . paragraph = function ( html ) {
24
- return sanitizeHtml ( html , htmlWhitelistPost ) ;
25
- } ;
26
-
27
41
// Set the options to use for rendering markdown
28
42
marked . setOptions ( {
29
43
highlight : function ( code , lang ) {
0 commit comments