aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2020-02-07 18:57:12 +0100
committerache <ache@ache.one>2020-02-07 18:57:12 +0100
commit292b0e0b0716716b5505e43a3de75487794f887d (patch)
treeb4aefac36894817b01c02ef1668f39c8d78bb37a
parentNicer tests (diff)
Support for linkReferences and footnotes
-rw-r--r--__tests__/index.js35
-rw-r--r--dist/index.js5
-rw-r--r--src/index.js3
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',
'*': '*',
};