mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 01:36:22 +00:00
- add data-line attribute to definition lists and lists
- add tests
This commit is contained in:
@@ -116,7 +116,7 @@ module.exports = function definitionListPlugin (md) {
|
|||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
token = state.push('dd_open', 'dd', 1)
|
token = state.push('dd_open', 'dd', 1)
|
||||||
token.map = itemLines = [ nextLine, 0 ]
|
token.map = itemLines = [ ddLine, 0 ]
|
||||||
|
|
||||||
pos = contentStart
|
pos = contentStart
|
||||||
max = state.eMarks[ddLine]
|
max = state.eMarks[ddLine]
|
||||||
|
|||||||
@@ -251,9 +251,12 @@ class Markdown {
|
|||||||
this.md.renderer.render = (tokens, options, env) => {
|
this.md.renderer.render = (tokens, options, env) => {
|
||||||
tokens.forEach((token) => {
|
tokens.forEach((token) => {
|
||||||
switch (token.type) {
|
switch (token.type) {
|
||||||
case 'heading_open':
|
|
||||||
case 'paragraph_open':
|
|
||||||
case 'blockquote_open':
|
case 'blockquote_open':
|
||||||
|
case 'dd_open':
|
||||||
|
case 'dt_open':
|
||||||
|
case 'heading_open':
|
||||||
|
case 'list_item_open':
|
||||||
|
case 'paragraph_open':
|
||||||
case 'table_open':
|
case 'table_open':
|
||||||
token.attrPush(['data-line', token.map[0]])
|
token.attrPush(['data-line', token.map[0]])
|
||||||
}
|
}
|
||||||
|
|||||||
59
tests/fixtures/markdowns.js
vendored
59
tests/fixtures/markdowns.js
vendored
@@ -50,11 +50,68 @@ const smartQuotes = 'This is a "QUOTE".'
|
|||||||
|
|
||||||
const breaks = 'This is the first line.\nThis is the second line.'
|
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 {
|
export default {
|
||||||
basic,
|
basic,
|
||||||
codeblock,
|
codeblock,
|
||||||
katex,
|
katex,
|
||||||
checkboxes,
|
checkboxes,
|
||||||
smartQuotes,
|
smartQuotes,
|
||||||
breaks
|
breaks,
|
||||||
|
abbrevations,
|
||||||
|
subTexts,
|
||||||
|
supTexts,
|
||||||
|
deflists
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,3 +43,23 @@ test('Markdown.render() should render line breaks correctly', t => {
|
|||||||
const renderedNonBreaks = newmd.render(markdownFixtures.breaks)
|
const renderedNonBreaks = newmd.render(markdownFixtures.breaks)
|
||||||
t.snapshot(renderedNonBreaks)
|
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)
|
||||||
|
})
|
||||||
|
|||||||
@@ -25,13 +25,22 @@ Generated by [AVA](https://ava.li).
|
|||||||
`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mo>=</mo><mi>p</mi><mi>m</mi><mi>s</mi><mi>q</mi><mi>r</mi><mi>t</mi><mrow><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><annotation encoding="application/x-tex">c = pmsqrt{a^2 + b^2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8641079999999999em;"></span><span class="strut bottom" style="height:1.0585479999999998em;vertical-align:-0.19444em;"></span><span class="base"><span class="mord mathit">c</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord mathit">p</span><span class="mord mathit">m</span><span class="mord mathit">s</span><span class="mord mathit" style="margin-right:0.03588em;">q</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">t</span><span class="mord"><span class="mord"><span class="mord mathit">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathit">b</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span></span>␊
|
`<span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mo>=</mo><mi>p</mi><mi>m</mi><mi>s</mi><mi>q</mi><mi>r</mi><mi>t</mi><mrow><msup><mi>a</mi><mn>2</mn></msup><mo>+</mo><msup><mi>b</mi><mn>2</mn></msup></mrow></mrow><annotation encoding="application/x-tex">c = pmsqrt{a^2 + b^2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.8641079999999999em;"></span><span class="strut bottom" style="height:1.0585479999999998em;vertical-align:-0.19444em;"></span><span class="base"><span class="mord mathit">c</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mord rule" style="margin-right:0.2777777777777778em;"></span><span class="mord mathit">p</span><span class="mord mathit">m</span><span class="mord mathit">s</span><span class="mord mathit" style="margin-right:0.03588em;">q</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">t</span><span class="mord"><span class="mord"><span class="mord mathit">a</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mord rule" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathit">b</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8641079999999999em;"><span style="top:-3.113em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span></span>␊
|
||||||
`
|
`
|
||||||
|
|
||||||
|
## Markdown.render() should renders abbrevations correctly
|
||||||
|
|
||||||
|
> Snapshot 1
|
||||||
|
|
||||||
|
`<h2 data-line="1" id="abbr">abbr</h2>␊
|
||||||
|
<p data-line="3">The <abbr title="Hyper Text Markup Language">HTML</abbr> specification<br />␊
|
||||||
|
is maintained by the <abbr title="World Wide Web Consortium">W3C</abbr>.</p>␊
|
||||||
|
`
|
||||||
|
|
||||||
## Markdown.render() should renders checkboxes
|
## Markdown.render() should renders checkboxes
|
||||||
|
|
||||||
> Snapshot 1
|
> Snapshot 1
|
||||||
|
|
||||||
`<ul>␊
|
`<ul>␊
|
||||||
<li class="taskListItem"><input type="checkbox" id="checkbox-2" /> Unchecked</li>␊
|
<li class="taskListItem" data-line="1"><input type="checkbox" id="checkbox-2" /> Unchecked</li>␊
|
||||||
<li class="taskListItem"><input type="checkbox" checked id="checkbox-3" /> Checked</li>␊
|
<li class="taskListItem" data-line="2"><input type="checkbox" checked id="checkbox-3" /> Checked</li>␊
|
||||||
</ul>␊
|
</ul>␊
|
||||||
`
|
`
|
||||||
|
|
||||||
@@ -43,6 +52,37 @@ Generated by [AVA](https://ava.li).
|
|||||||
</code></pre>␊
|
</code></pre>␊
|
||||||
`
|
`
|
||||||
|
|
||||||
|
## Markdown.render() should renders definition lists correctly
|
||||||
|
|
||||||
|
> Snapshot 1
|
||||||
|
|
||||||
|
`<h2 data-line="1" id="definition-list">definition list</h2>␊
|
||||||
|
<h3 data-line="3" id="list-1">list 1</h3>␊
|
||||||
|
<dl>␊
|
||||||
|
<dt data-line="5">Term 1</dt>␊
|
||||||
|
<dd data-line="6">Definition 1</dd>␊
|
||||||
|
<dt data-line="8">Term 2</dt>␊
|
||||||
|
<dd data-line="9">Definition 2a</dd>␊
|
||||||
|
<dd data-line="10">Definition 2b</dd>␊
|
||||||
|
</dl>␊
|
||||||
|
<p data-line="12">Term 3<br />␊
|
||||||
|
~</p>␊
|
||||||
|
<h3 data-line="16" id="list-2">list 2</h3>␊
|
||||||
|
<dl>␊
|
||||||
|
<dt data-line="18">Term 1</dt>␊
|
||||||
|
<dd data-line="20">␊
|
||||||
|
<p data-line="20">Definition 1</p>␊
|
||||||
|
</dd>␊
|
||||||
|
<dt data-line="22">Term 2 with <em>inline markup</em></dt>␊
|
||||||
|
<dd data-line="24">␊
|
||||||
|
<p data-line="24">Definition 2</p>␊
|
||||||
|
<pre><code> { some code, part of Definition 2 }␊
|
||||||
|
</code></pre>␊
|
||||||
|
<p data-line="28">Third paragraph of definition 2.</p>␊
|
||||||
|
</dd>␊
|
||||||
|
</dl>␊
|
||||||
|
`
|
||||||
|
|
||||||
## Markdown.render() should renders markdown correctly
|
## Markdown.render() should renders markdown correctly
|
||||||
|
|
||||||
> Snapshot 1
|
> Snapshot 1
|
||||||
@@ -52,31 +92,47 @@ Generated by [AVA](https://ava.li).
|
|||||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/L0qNPLsvmyM" frameborder="0" allowfullscreen></iframe>␊
|
<iframe width="560" height="315" src="https://www.youtube.com/embed/L0qNPLsvmyM" frameborder="0" allowfullscreen></iframe>␊
|
||||||
<h2 data-line="6" id="Docs-%F0%9F%93%9D">Docs 📝</h2>␊
|
<h2 data-line="6" id="Docs-%F0%9F%93%9D">Docs 📝</h2>␊
|
||||||
<ul>␊
|
<ul>␊
|
||||||
<li><a href="https://hackernoon.com/boostnote-boost-your-happiness-productivity-and-creativity-315034efeebe">Boostnote | Boost your happiness, productivity and creativity.</a></li>␊
|
<li data-line="7"><a href="https://hackernoon.com/boostnote-boost-your-happiness-productivity-and-creativity-315034efeebe">Boostnote | Boost your happiness, productivity and creativity.</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Cloud-Syncing-and-Backup">Cloud Syncing & Backups</a></li>␊
|
<li data-line="8"><a href="https://github.com/BoostIO/Boostnote/wiki/Cloud-Syncing-and-Backup">Cloud Syncing & Backups</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Sync-Data-Across-Desktop-and-Mobile-apps">How to sync your data across Desktop and Mobile apps</a></li>␊
|
<li data-line="9"><a href="https://github.com/BoostIO/Boostnote/wiki/Sync-Data-Across-Desktop-and-Mobile-apps">How to sync your data across Desktop and Mobile apps</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Evernote">Convert data from <strong>Evernote</strong> to Boostnote.</a></li>␊
|
<li data-line="10"><a href="https://github.com/BoostIO/Boostnote/wiki/Evernote">Convert data from <strong>Evernote</strong> to Boostnote.</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Keyboard-Shortcuts">Keyboard Shortcuts</a></li>␊
|
<li data-line="11"><a href="https://github.com/BoostIO/Boostnote/wiki/Keyboard-Shortcuts">Keyboard Shortcuts</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Keymaps-in-Editor-mode">Keymaps in Editor mode</a></li>␊
|
<li data-line="12"><a href="https://github.com/BoostIO/Boostnote/wiki/Keymaps-in-Editor-mode">Keymaps in Editor mode</a></li>␊
|
||||||
<li><a href="https://github.com/BoostIO/Boostnote/wiki/Syntax-Highlighting">How to set syntax highlight in Snippet note</a></li>␊
|
<li data-line="13"><a href="https://github.com/BoostIO/Boostnote/wiki/Syntax-Highlighting">How to set syntax highlight in Snippet note</a></li>␊
|
||||||
</ul>␊
|
</ul>␊
|
||||||
<hr />␊
|
<hr />␊
|
||||||
<h2 data-line="17" id="Article-Archive-%F0%9F%93%9A">Article Archive 📚</h2>␊
|
<h2 data-line="17" id="Article-Archive-%F0%9F%93%9A">Article Archive 📚</h2>␊
|
||||||
<ul>␊
|
<ul>␊
|
||||||
<li><a href="http://bit.ly/2mOJPu7">Reddit English</a></li>␊
|
<li data-line="18"><a href="http://bit.ly/2mOJPu7">Reddit English</a></li>␊
|
||||||
<li><a href="https://www.reddit.com/r/boostnote_es/">Reddit Spanish</a></li>␊
|
<li data-line="19"><a href="https://www.reddit.com/r/boostnote_es/">Reddit Spanish</a></li>␊
|
||||||
<li><a href="https://www.reddit.com/r/boostnote_cn/">Reddit Chinese</a></li>␊
|
<li data-line="20"><a href="https://www.reddit.com/r/boostnote_cn/">Reddit Chinese</a></li>␊
|
||||||
<li><a href="https://www.reddit.com/r/boostnote_jp/">Reddit Japanese</a></li>␊
|
<li data-line="21"><a href="https://www.reddit.com/r/boostnote_jp/">Reddit Japanese</a></li>␊
|
||||||
</ul>␊
|
</ul>␊
|
||||||
<hr />␊
|
<hr />␊
|
||||||
<h2 data-line="25" id="Community-%F0%9F%8D%BB">Community 🍻</h2>␊
|
<h2 data-line="25" id="Community-%F0%9F%8D%BB">Community 🍻</h2>␊
|
||||||
<ul>␊
|
<ul>␊
|
||||||
<li><a href="http://bit.ly/2AWWzkD">GitHub</a></li>␊
|
<li data-line="26"><a href="http://bit.ly/2AWWzkD">GitHub</a></li>␊
|
||||||
<li><a href="http://bit.ly/2z8BUJZ">Twitter</a></li>␊
|
<li data-line="27"><a href="http://bit.ly/2z8BUJZ">Twitter</a></li>␊
|
||||||
<li><a href="http://bit.ly/2jcca8t">Facebook Group</a></li>␊
|
<li data-line="28"><a href="http://bit.ly/2jcca8t">Facebook Group</a></li>␊
|
||||||
</ul>␊
|
</ul>␊
|
||||||
`
|
`
|
||||||
|
|
||||||
|
## Markdown.render() should renders sub correctly
|
||||||
|
|
||||||
|
> Snapshot 1
|
||||||
|
|
||||||
|
`<h2 data-line="1" id="sub">sub</h2>␊
|
||||||
|
<p data-line="3">H<sub>2</sub>0</p>␊
|
||||||
|
`
|
||||||
|
|
||||||
|
## Markdown.render() should renders sup correctly
|
||||||
|
|
||||||
|
> Snapshot 1
|
||||||
|
|
||||||
|
`<h2 data-line="1" id="sup">sup</h2>␊
|
||||||
|
<p data-line="3">29<sup>th</sup></p>␊
|
||||||
|
`
|
||||||
|
|
||||||
## Markdown.render() should text with quotes correctly
|
## Markdown.render() should text with quotes correctly
|
||||||
|
|
||||||
> Snapshot 1
|
> Snapshot 1
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user