UNPKG

html-to-md

Version:

A JS library for convert HTML<String> to markdown<String>, gzip 10kb

319 lines (294 loc) 12.2 kB
import html2Md from '../../src/index' const UL_SPACE = 2 const OL_SPACE = 3 describe("test <ul></ul> tag", () => { it('unorder list', () => { let ul = html2Md('<ul>\n' + '<li>one</li>\n' + '<li>two</li>\n' + '<li>three</li>\n' + '</ul>') expect(ul).toBe( '* ' + ' '.repeat(UL_SPACE - 2) + 'one\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'two\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'three') }) it('nest ul', () => { let ul = html2Md('<ul>\n' + '<li>one</li>\n' + '<li>two\n' + '<ul>\n' + '<li>one</li>\n' + '<li>two</li>\n' + '<li>three</li>\n' + '</ul>\n' + '</li>\n' + '<li>three</li>\n' + '</ul>') expect(ul).toBe( '* ' + ' '.repeat(UL_SPACE - 2) + 'one\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'two\n' + ' '.repeat(UL_SPACE) + '* ' + ' '.repeat(UL_SPACE - 2) + 'one\n' + ' '.repeat(UL_SPACE) + '* ' + ' '.repeat(UL_SPACE - 2) + 'two\n' + ' '.repeat(UL_SPACE) + '* ' + ' '.repeat(UL_SPACE - 2) + 'three\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'three') }) it('nest ol', () => { let ul = html2Md('<ul>\n' + '<li>one</li>\n' + '<li>two\n' + '<ol>\n' + '<li>unorder-1</li>\n' + '<li>unorder-2</li>\n' + '<li>unorder-3</li>\n' + '</ol>\n' + '</li>\n' + '<li>three</li>\n' + '</ul>') expect(ul).toBe( '* ' + ' '.repeat(UL_SPACE - 2) + 'one\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'two\n' + ' '.repeat(UL_SPACE) + '1.' + ' '.repeat(OL_SPACE - 2) + 'unorder-1\n' + ' '.repeat(UL_SPACE) + '2.' + ' '.repeat(OL_SPACE - 2) + 'unorder-2\n' + ' '.repeat(UL_SPACE) + '3.' + ' '.repeat(OL_SPACE - 2) + 'unorder-3\n' + '* ' + ' '.repeat(UL_SPACE - 2) + 'three') }) it('complicate nest', () => { let ul = html2Md('<ul>\n' + '<li><strong>STRONG</strong></li>\n' + '<li><a href="https://github.com/-it/markdown-it-sub">ATag</a>\n' + '<ol>\n' + '<li>unorder-1</li>\n' + '<li>unorder-2\n' + '<ul>\n' + '<li>one</li>\n' + '<li>two\n' + '<blockquote>\n' + '<ol>\n' + '<li>bq-nest-1</li>\n' + '</ol>\n' + '<blockquote>\n' + '<ol>\n' + '<li>bq-nest-2</li>\n' + '</ol>\n' + '<blockquote>\n' + '<ol>\n' + '<li>bq-nest-3</li>\n' + '</ol>\n' + '</blockquote>\n' + '</blockquote>\n' + '</blockquote>\n' + '</li>\n' + '</ul>\n' + '</li>\n' + '<li>unorder-3\n' + '<ol>\n' + '<li>code<pre class="hljs language-javascript"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">a</span>(<span class="hljs-params"></span>)</span>{\n' + ' <span class="hljs-keyword">let</span> b=<span class="hljs-number">5</span>\n' + ' <span class="hljs-keyword">let</span> obj={\n' + ' <span class="hljs-attr">x</span>:<span class="hljs-number">100</span>\n' + ' }\n' + ' <span class="hljs-keyword">return</span> obj.x+b\n' + '}\n' + '</code></pre>\n' + '</li>\n' + '</ol>\n' + '</li>\n' + '</ol>\n' + '</li>\n' + '<li>three</li>\n' + '</ul>') expect(ul).toBe( '*' + ' '.repeat(UL_SPACE - 1) + '**STRONG**\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[ATag](https://github.com/-it/markdown-it-sub)\n' + '\n'+ ' '.repeat(UL_SPACE) + '1.' + ' '.repeat(OL_SPACE - 2) + 'unorder-1\n' + ' '.repeat(UL_SPACE) + '2.' + ' '.repeat(OL_SPACE - 2) + 'unorder-2\n' + ' '.repeat(UL_SPACE + OL_SPACE) + '*' + ' '.repeat(UL_SPACE - 1) + 'one\n' + ' '.repeat(UL_SPACE + OL_SPACE) + '*' + ' '.repeat(UL_SPACE - 1) + 'two\n' + ' '.repeat(UL_SPACE * 2 + OL_SPACE) + '> 1.' + ' '.repeat(OL_SPACE - 2) + 'bq-nest-1\n' + ' '.repeat(UL_SPACE * 2 + OL_SPACE) + '>\n' + ' '.repeat(UL_SPACE * 2 + OL_SPACE) + '>> 1.' + ' '.repeat(OL_SPACE - 2) + 'bq-nest-2\n' + ' '.repeat(UL_SPACE * 2 + OL_SPACE) + '>>\n' + ' '.repeat(UL_SPACE * 2 + OL_SPACE) + '>>> 1.' + ' '.repeat(OL_SPACE - 2) + 'bq-nest-3\n' + ' '.repeat(UL_SPACE) + '3.' + ' '.repeat(OL_SPACE - 2) + 'unorder-3\n' + ' '.repeat(UL_SPACE + OL_SPACE) + '1.' + ' '.repeat(OL_SPACE - 2) + 'code\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + '```javascript\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + 'function a(){\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + ' let b=5\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + ' let obj={\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + ' x:100\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + ' }\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + ' return obj.x+b\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + '}\n' + ' '.repeat(UL_SPACE + 2 * OL_SPACE) + '```\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'three') }) it("li nest p", () => { let ul = html2Md("<ul>\n" + "<li>\n" + "<p>Lorem ipsum dolor sit amet</p></li>\n" + "<li><p>Consectetur adipiscing elit</p>\n" + "</li>\n" + "<li><p>Integer molestie lorem at massa</p></li>\n" + "<li>\n" + "<p>You can use sequential numbers…</p>\n" + "</li>\n" + "<li>\n" + "<p>…or keep all the numbers as <code>1.</code></p>\n" + "</li>\n" + "</ul>") expect(ul).toBe( '*' + ' '.repeat(UL_SPACE - 1) + 'Lorem ipsum dolor sit amet\n' + '\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'Consectetur adipiscing elit\n' + '\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'Integer molestie lorem at massa\n' + '\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'You can use sequential numbers…\n' + '\n' + '*' + ' '.repeat(UL_SPACE - 1) + '…or keep all the numbers as `1.`') }) it("text in li", () => { let ul = html2Md("<ul>\n" + "<li>Lorem ipsum dolor sit amet\n" + "</li>\n" + "<li>\n" + "Consectetur adipiscing elit</li>\n" + "<li>Integer molestie lorem at massa</li>\n" + "<li>\n" + "You can use sequential numbers…\n" + "</li>\n" + "<li>\n" + "…or keep all the numbers as <code>1.</code>\n" + "</li>\n" + "</ul>") expect(ul).toBe( '*' + ' '.repeat(UL_SPACE - 1) + 'Lorem ipsum dolor sit amet\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'Consectetur adipiscing elit\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'Integer molestie lorem at massa\n' + '*' + ' '.repeat(UL_SPACE - 1) + 'You can use sequential numbers…\n' + '*' + ' '.repeat(UL_SPACE - 1) + '…or keep all the numbers as `1.`') }) it("todo list", () => { let ul = html2Md('<ul>\n' + '<li><input disabled="" type="checkbox"> not finish-1</li>\n' + '<li><input disabled="" type="checkbox"> not finish-2</li>\n' + '<li><input disabled="" type="checkbox"> not finish-3</li>\n' + '<li><input disabled="" type="checkbox"> not finish-4</li>\n' + '</ul>') expect(ul).toBe( '*' + ' '.repeat(UL_SPACE - 1) + '[ ] not finish-1\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[ ] not finish-2\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[ ] not finish-3\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[ ] not finish-4') }) it("done list", () => { let ul = html2Md('<ul>\n' + '<li><input checked="" disabled="" type="checkbox"> finish-1</li>\n' + '<li><input checked="" disabled="" type="checkbox"> finish-2</li>\n' + '<li><input checked="" disabled="" type="checkbox"> finish-3</li>\n' + '<li><input checked="" disabled="" type="checkbox"> finish-4</li>\n' + '</ul>') expect(ul).toBe( '*' + ' '.repeat(UL_SPACE - 1) + '[x] finish-1\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[x] finish-2\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[x] finish-3\n' + '*' + ' '.repeat(UL_SPACE - 1) + '[x] finish-4') }) it("test <br>", () => { let ul = html2Md('<ul>\n' + '<li><strong>参数replace</strong><br>\n' + '用来设置是否可以取相同元素:<br>\n' + 'True表示可以取相同数字;<br>\n' + 'False表示不可以取相同数字。<br>\n' + '默认是True</li>\n' + '</ul>') expect(ul).toBe( `* **参数replace** 用来设置是否可以取相同元素: True表示可以取相同数字; False表示不可以取相同数字。 默认是True`) }) it("test <br> 2", () => { let ul = html2Md('<ul>\n' + '<li><strong>参数replace</strong><br>\n' + '用来设置是否可以取相同元素:<br>\n' + 'True表示可以取相同数字;<br>\n' + '<ul>\n' + '<li><strong>nest参数replace</strong><br>\n' + 'nest用来设置是否可以取相同元素:<br>\n' + 'nestTrue表示可以取相同数字;<br>\n' + 'nestFalse表示不可以取相同数字。<br>\n' + 'nest默认是True</li>\n' + '</ul>' + '默认是True</li>\n' + '</ul>') expect(ul).toBe("* **参数replace** \n" + " 用来设置是否可以取相同元素: \n" + " True表示可以取相同数字; \n" + "\n" + " * **nest参数replace** \n" + " nest用来设置是否可以取相同元素: \n" + " nestTrue表示可以取相同数字; \n" + " nestFalse表示不可以取相同数字。 \n" + " nest默认是True\n" + " 默认是True") }) it("nest ul-2", () => { let ul = html2Md(`<ul> <li>Create a list by starting a line with <code>+</code>, <code>-</code>, or <code>*</code></li> <li>Sub-lists are made by indenting 2 spaces: <ul> <li>Marker character change forces new list start: <ul> <li>Ac tristique libero volutpat at</li> </ul> <ul> <li>Facilisis in pretium nisl aliquet</li> </ul> <ul> <li>Nulla volutpat aliquam velit</li> </ul> </li> </ul> </li> <li>Very easy!</li> </ul>`) expect(ul).toBe("* Create a list by starting a line with `+`, `-`, or `*`\n" + "* Sub-lists are made by indenting 2 spaces:\n" + " * Marker character change forces new list start:\n" + " * Ac tristique libero volutpat at\n" + "\n" + " * Facilisis in pretium nisl aliquet\n" + "\n" + " * Nulla volutpat aliquam velit\n" + "* Very easy!") }) it("nest space with table", () => { let ul = html2Md(`<ul> <li> <p>foo</p> <table> <thead> <tr> <th>foo</th> <th>bar</th> </tr> </thead> <tbody> <tr> <td>baz</td> <td>qux</td> </tr> </tbody> </table> </li> </ul>`) expect(ul).toBe(`* foo |foo|bar| |---|---| |baz|qux|`) }) })