diff options
author | ache <ache@ache.one> | 2020-02-07 18:57:12 +0100 |
---|---|---|
committer | ache <ache@ache.one> | 2020-02-07 18:57:12 +0100 |
commit | 292b0e0b0716716b5505e43a3de75487794f887d (patch) | |
tree | b4aefac36894817b01c02ef1668f39c8d78bb37a | |
parent | Nicer tests (diff) |
Support for linkReferences and footnotes
-rw-r--r-- | __tests__/index.js | 35 | ||||
-rw-r--r-- | dist/index.js | 5 | ||||
-rw-r--r-- | src/index.js | 3 |
3 files changed, 38 insertions, 5 deletions
diff --git a/__tests__/index.js b/__tests__/index.js index 7ac7b0c..6cfa471 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -25,6 +25,13 @@ const render = text => unified() .use(stringify) .processSync(text); +const renderFootnotes = text => unified() + .use(reParse, {footnotes: true}) + .use(plugin, {allowDangerousDOMEventHandlers: false, scope: 'permissive'}) + .use(remark2rehype) + .use(stringify) + .processSync(text); + const renderRaw = text => unified() .use(reParse) .use(plugin, {allowDangerousDOMEventHandlers: false, scope: 'permissive'}) @@ -128,16 +135,40 @@ Title of the article {data-id="title"} `; - const {contents} = render(imageMd); + const {contents} = renderDefault(imageMd); t.deepEqual(parse(contents), parse('<h1 data-id="title">Title of the article</h1>')); }); test('emphasis and strong', t => { const emphasis = 'Hey ! *That looks cool*{style="color: blue;"} ! No, that\'s **not**{.not} !'; - const {contents} = render(emphasis); + const {contents} = renderDefault(emphasis); t.deepEqual(parse(contents), parse('<p>Hey ! <em style="color: blue;">That looks cool</em> ! No, that\'s <strong class="not">not</strong> !')); }); +test('linkReference', t => { + const linkRef = `[Google][google]{hreflang="en"} + +[google]: https://google.com +`; + const {contents} = renderDefault(linkRef); + t.deepEqual(parse(contents), parse('<p><a href="https://google.com" hreflang="en">Google</a></p>')); +}); + +test('footnote', t => { + const footnotes = `Since XP is good we should always use XP[^xp]{ data-id=xp } + +[^xp]: Apply XP principe to XP. +`; + const {contents} = renderFootnotes(footnotes); + t.deepEqual(parse(contents), parse(`<p>Since XP is good we should always use XP<sup id="fnref-xp"><a href="#fn-xp" class="footnote-ref" data-id="xp">xp</a></sup></p> +<div class="footnotes"> +<hr> +<ol> +<li id="fn-xp">Apply XP principe to XP.<a href="#fnref-xp" class="footnote-backref">↩</a></li> +</ol> +</div>`)); +}); + /* Readme tests * * Should be act acording to the README.md diff --git a/dist/index.js b/dist/index.js index b857126..92abac4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2,7 +2,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -10,7 +10,7 @@ var parseAttr = require('md-attr-parser'); var htmlElemAttr = require('html-element-attributes'); -var supportedElements = ['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading', 'fencedCode']; +var supportedElements = ['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading', 'fencedCode', 'reference']; var blockElements = ['atxHeading', 'setextHeading']; var particularElements = ['fencedCode']; var particularTokenize = {}; @@ -28,6 +28,7 @@ var convTypeTag = { "delete": 's', inlineCode: 'code', code: 'code', + linkReference: 'a', '*': '*' }; /* This function is a generic function that transform diff --git a/src/index.js b/src/index.js index 9f5fd12..3007b90 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ const parseAttr = require('md-attr-parser'); const htmlElemAttr = require('html-element-attributes'); -const supportedElements = ['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading', 'fencedCode']; +const supportedElements = ['link', 'atxHeading', 'strong', 'emphasis', 'deletion', 'code', 'setextHeading', 'fencedCode', 'reference']; const blockElements = ['atxHeading', 'setextHeading']; const particularElements = ['fencedCode']; @@ -21,6 +21,7 @@ const convTypeTag = { delete: 's', inlineCode: 'code', code: 'code', + linkReference: 'a', '*': '*', }; |