1
1
'use strict' ;
2
2
3
3
var path = require ( 'path' ) ;
4
- var cheerio = require ( 'cheerio' ) ;
5
4
var prettyHrtime = require ( 'pretty-hrtime' ) ;
6
- var translit = require ( path . join ( global . pathToApp , 'core/lib/translit' ) ) ;
7
-
8
- var marked = require ( 'marked' ) ;
9
- var renderer = new marked . Renderer ( ) ;
10
- marked . setOptions ( {
11
- renderer : renderer
12
- } ) ;
5
+ var processMd = require ( path . join ( global . pathToApp , 'core/lib/processMd' ) ) ;
13
6
14
7
/*
15
8
* Get file content from response and parse contained Markdown markup
@@ -21,59 +14,9 @@ marked.setOptions({
21
14
exports . process = function ( req , res , next ) {
22
15
if ( req . specData && req . specData . renderedHtml && req . specData . isMd ) {
23
16
var start = process . hrtime ( ) ;
24
- var input = req . specData . renderedHtml ;
25
-
26
- // Processing with native markdown renderer
27
- renderer . code = function ( code , language ) {
28
- if ( language === 'example' ) {
29
- return '<div class="source_example">' + code + '</div>' ;
30
- } else if ( language && language !== '' ) {
31
- return '<code class="src-' + language + ' source_visible">' + code + '</code>' ;
32
- } else {
33
- return '<pre><code class="lang-source_wide-code">' + code + '</code></pre>' ;
34
- }
35
- } ;
36
-
37
- renderer . heading = function ( text , level ) {
38
- var escapedText = translit ( text ) ;
39
-
40
- return '<h' + level + ' id="' + escapedText + '">' + text + '</h' + level + '>' ;
41
- } ;
42
-
43
- var $ = cheerio . load ( '<div id="content">' + marked ( input ) + '</div>' ) ;
44
-
45
- // Spec description
46
- var $H1 = $ ( '#content > h1' ) ;
47
- var $afterH1 = $H1 . nextUntil ( 'h2' ) ;
48
- $afterH1 . remove ( ) ;
49
- $H1 . after ( '<div class="source_info">' + $afterH1 + '</div>' ) ;
50
-
51
- // Spec sections
52
- $ ( '#content > h2' ) . each ( function ( ) {
53
- var $this = $ ( this ) ;
54
- var $filteredElems = $ ( '' ) ;
55
-
56
- var $sectionElems = $this . nextUntil ( 'h2' ) ;
57
- var id = $this . attr ( 'id' ) ;
58
- $this . removeAttr ( 'id' ) ;
59
-
60
- // Adding additional check, since cheerio .nextUntil is not stable
61
- $sectionElems . each ( function ( ) {
62
- if ( this . tagName === 'h2' ) return false ;
63
-
64
- $filteredElems = $filteredElems . add ( this ) ;
65
- } ) ;
66
-
67
- $filteredElems . remove ( ) ;
68
-
69
- $ ( this ) . replaceWith ( [
70
- '<div class="source_section" id="' + id + '">' ,
71
- $this + $filteredElems ,
72
- '</div>'
73
- ] . join ( '' ) ) ;
74
- } ) ;
17
+ var plainMarkdown = req . specData . renderedHtml ;
75
18
76
- req . specData . renderedHtml = $ ( '#content' ) . html ( ) ;
19
+ req . specData . renderedHtml = processMd ( plainMarkdown ) ;
77
20
78
21
var end = process . hrtime ( start ) ;
79
22
global . log . debug ( 'Markdown processing took: ' , prettyHrtime ( end ) ) ;
0 commit comments