diff --git a/test/doctool/test-doctool-html.js b/test/doctool/test-doctool-html.js index 91037bfd6501bc..91a18d536a6992 100644 --- a/test/doctool/test-doctool-html.js +++ b/test/doctool/test-doctool-html.js @@ -29,11 +29,11 @@ const testData = [ file: fixtures.path('order_of_end_tags_5873.md'), html: '

ClassMethod: Buffer.from(array) ' + '#

' }, { file: fixtures.path('doc_with_yaml.md'), diff --git a/tools/doc/html.js b/tools/doc/html.js index 439fc057012ca7..1bb5fa630fa8c2 100644 --- a/tools/doc/html.js +++ b/tools/doc/html.js @@ -93,7 +93,7 @@ function render(opts, cb) { filename = path.basename(filename, '.md'); parseText(lexed); - lexed = parseLists(lexed); + lexed = preprocessElements(lexed); // Generate the table of contents. // This mutates the lexed contents in-place. @@ -231,25 +231,28 @@ function parseText(lexed) { }); } -// Just update the list item text in-place. -// Lists that come right after a heading are what we're after. -function parseLists(input) { +// Preprocess stability blockquotes and YAML blocks. +function preprocessElements(input) { var state = null; - const savedState = []; - var depth = 0; const output = []; let headingIndex = -1; let heading = null; output.links = input.links; input.forEach(function(tok, index) { + if (tok.type === 'heading') { + headingIndex = index; + heading = tok; + } + if (tok.type === 'html' && common.isYAMLBlock(tok.text)) { + tok.text = parseYAML(tok.text); + } if (tok.type === 'blockquote_start') { - savedState.push(state); state = 'MAYBE_STABILITY_BQ'; return; } if (tok.type === 'blockquote_end' && state === 'MAYBE_STABILITY_BQ') { - state = savedState.pop(); + state = null; return; } if ((tok.type === 'paragraph' && state === 'MAYBE_STABILITY_BQ') || @@ -271,50 +274,7 @@ function parseLists(input) { return; } else if (state === 'MAYBE_STABILITY_BQ') { output.push({ type: 'blockquote_start' }); - state = savedState.pop(); - } - } - if (state === null || - (state === 'AFTERHEADING' && tok.type === 'heading')) { - if (tok.type === 'heading') { - headingIndex = index; - heading = tok; - state = 'AFTERHEADING'; - } - output.push(tok); - return; - } - if (state === 'AFTERHEADING') { - if (tok.type === 'list_start') { - state = 'LIST'; - if (depth === 0) { - output.push({ type: 'html', text: '
' }); - } - depth++; - output.push(tok); - return; - } - if (tok.type === 'html' && common.isYAMLBlock(tok.text)) { - tok.text = parseYAML(tok.text); - } - state = null; - output.push(tok); - return; - } - if (state === 'LIST') { - if (tok.type === 'list_start') { - depth++; - output.push(tok); - return; - } - if (tok.type === 'list_end') { - depth--; - output.push(tok); - if (depth === 0) { - state = null; - output.push({ type: 'html', text: '
' }); - } - return; + state = null; } } output.push(tok);