From 76928e43a317651501615aa9c9b5089835912753 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Mon, 17 Sep 2018 22:46:20 +0200 Subject: [PATCH] - add `data-line` attribute to definition lists and lists - add tests --- browser/lib/markdown-it-deflist.js | 2 +- browser/lib/markdown.js | 7 +- tests/fixtures/markdowns.js | 59 ++++++++++++++- tests/lib/markdown-test.js | 20 +++++ tests/lib/snapshots/markdown-test.js.md | 88 ++++++++++++++++++---- tests/lib/snapshots/markdown-test.js.snap | Bin 1724 -> 2265 bytes 6 files changed, 156 insertions(+), 20 deletions(-) diff --git a/browser/lib/markdown-it-deflist.js b/browser/lib/markdown-it-deflist.js index f3c58009..db14c636 100644 --- a/browser/lib/markdown-it-deflist.js +++ b/browser/lib/markdown-it-deflist.js @@ -116,7 +116,7 @@ module.exports = function definitionListPlugin (md) { for (;;) { token = state.push('dd_open', 'dd', 1) - token.map = itemLines = [ nextLine, 0 ] + token.map = itemLines = [ ddLine, 0 ] pos = contentStart max = state.eMarks[ddLine] diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index 6420f215..81a1ed67 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -251,9 +251,12 @@ class Markdown { this.md.renderer.render = (tokens, options, env) => { tokens.forEach((token) => { switch (token.type) { - case 'heading_open': - case 'paragraph_open': case 'blockquote_open': + case 'dd_open': + case 'dt_open': + case 'heading_open': + case 'list_item_open': + case 'paragraph_open': case 'table_open': token.attrPush(['data-line', token.map[0]]) } diff --git a/tests/fixtures/markdowns.js b/tests/fixtures/markdowns.js index 69e335e0..e261f231 100644 --- a/tests/fixtures/markdowns.js +++ b/tests/fixtures/markdowns.js @@ -50,11 +50,68 @@ const smartQuotes = 'This is a "QUOTE".' const breaks = 'This is the first line.\nThis is the second line.' +const abbrevations = ` +## abbr + +The HTML specification +is maintained by the W3C. + +*[HTML]: Hyper Text Markup Language +*[W3C]: World Wide Web Consortium +` + +const subTexts = ` +## sub + +H~2~0 +` + +const supTexts = ` +## sup + +29^th^ +` + +const deflists = ` +## definition list + +### list 1 + +Term 1 + ~ Definition 1 + +Term 2 + ~ Definition 2a + ~ Definition 2b + +Term 3 +~ + + +### list 2 + +Term 1 + +: Definition 1 + +Term 2 with *inline markup* + +: Definition 2 + + { some code, part of Definition 2 } + + Third paragraph of definition 2. +` + export default { basic, codeblock, katex, checkboxes, smartQuotes, - breaks + breaks, + abbrevations, + subTexts, + supTexts, + deflists } diff --git a/tests/lib/markdown-test.js b/tests/lib/markdown-test.js index 73b68799..e9fb8fc2 100644 --- a/tests/lib/markdown-test.js +++ b/tests/lib/markdown-test.js @@ -43,3 +43,23 @@ test('Markdown.render() should render line breaks correctly', t => { const renderedNonBreaks = newmd.render(markdownFixtures.breaks) t.snapshot(renderedNonBreaks) }) + +test('Markdown.render() should renders abbrevations correctly', t => { + const rendered = md.render(markdownFixtures.abbrevations) + t.snapshot(rendered) +}) + +test('Markdown.render() should renders sub correctly', t => { + const rendered = md.render(markdownFixtures.subTexts) + t.snapshot(rendered) +}) + +test('Markdown.render() should renders sup correctly', t => { + const rendered = md.render(markdownFixtures.supTexts) + t.snapshot(rendered) +}) + +test('Markdown.render() should renders definition lists correctly', t => { + const rendered = md.render(markdownFixtures.deflists) + t.snapshot(rendered) +}) diff --git a/tests/lib/snapshots/markdown-test.js.md b/tests/lib/snapshots/markdown-test.js.md index ffc3d699..b020b098 100644 --- a/tests/lib/snapshots/markdown-test.js.md +++ b/tests/lib/snapshots/markdown-test.js.md @@ -25,13 +25,22 @@ Generated by [AVA](https://ava.li). `c=pmsqrta2+b2c = pmsqrt{a^2 + b^2}␊ ` +## Markdown.render() should renders abbrevations correctly + +> Snapshot 1 + + `

abbr

␊ +

The HTML specification
␊ + is maintained by the W3C.

␊ + ` + ## Markdown.render() should renders checkboxes > Snapshot 1 `␊ ` @@ -43,6 +52,37 @@ Generated by [AVA](https://ava.li). ␊ ` +## Markdown.render() should renders definition lists correctly + +> Snapshot 1 + + `

definition list

␊ +

list 1

␊ +
␊ +
Term 1
␊ +
Definition 1
␊ +
Term 2
␊ +
Definition 2a
␊ +
Definition 2b
␊ +
␊ +

Term 3
␊ + ~

␊ +

list 2

␊ +
␊ +
Term 1
␊ +
␊ +

Definition 1

␊ +
␊ +
Term 2 with inline markup
␊ +
␊ +

Definition 2

␊ +
  { some code, part of Definition 2 }␊
+    
␊ +

Third paragraph of definition 2.

␊ +
␊ +
␊ + ` + ## Markdown.render() should renders markdown correctly > Snapshot 1 @@ -52,31 +92,47 @@ Generated by [AVA](https://ava.li).

Docs 📝


Article Archive 📚


Community 🍻

␊ ` +## Markdown.render() should renders sub correctly + +> Snapshot 1 + + `

sub

␊ +

H20

␊ + ` + +## Markdown.render() should renders sup correctly + +> Snapshot 1 + + `

sup

␊ +

29th

␊ + ` + ## Markdown.render() should text with quotes correctly > Snapshot 1 diff --git a/tests/lib/snapshots/markdown-test.js.snap b/tests/lib/snapshots/markdown-test.js.snap index fc310cfd28f22b2e7d20fa14c94bd5f9b806b0fd..c70ca57b19a7bdb613eea51a604048cf04c608bd 100644 GIT binary patch literal 2265 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 Svl~TT8}l!i*8=N#6951$K|E{#