86 lines
3.9 KiB
JavaScript
86 lines
3.9 KiB
JavaScript
|
const test = require("ava");
|
|||
|
const md = require("markdown-it");
|
|||
|
const markdownPrismJsOptions = require("../src/markdownSyntaxHighlightOptions");
|
|||
|
|
|||
|
test("Test Markdown Highlighter", t => {
|
|||
|
let mdLib = md();
|
|||
|
mdLib.set({
|
|||
|
highlight: markdownPrismJsOptions({ alwaysWrapLineHighlights: true })
|
|||
|
});
|
|||
|
t.is(mdLib.render(`\`\`\`js
|
|||
|
alert();
|
|||
|
\`\`\``).trim(), `<pre class="language-js"><code class="language-js"><span class="highlight-line"><span class="token function">alert</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span></code></pre>`);
|
|||
|
});
|
|||
|
|
|||
|
test("Test Markdown Highlighter No Line Highlights", t => {
|
|||
|
let mdLib = md();
|
|||
|
mdLib.set({
|
|||
|
highlight: markdownPrismJsOptions()
|
|||
|
});
|
|||
|
t.is(mdLib.render(`\`\`\`js
|
|||
|
alert();
|
|||
|
\`\`\``).trim(), `<pre class="language-js"><code class="language-js"><span class="token function">alert</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre>`);
|
|||
|
});
|
|||
|
|
|||
|
test("Markdown with `preAttributes`", t => {
|
|||
|
let mdLib = md();
|
|||
|
mdLib.set({
|
|||
|
highlight: markdownPrismJsOptions({
|
|||
|
alwaysWrapLineHighlights: true,
|
|||
|
preAttributes: {
|
|||
|
// will override class="language-js"
|
|||
|
class: ({language}) => "not-a-lang-" + language
|
|||
|
}
|
|||
|
})
|
|||
|
});
|
|||
|
t.is(mdLib.render(`\`\`\`js
|
|||
|
alert();
|
|||
|
\`\`\``).trim(), `<pre class="not-a-lang-js"><code class="language-js"><span class="highlight-line"><span class="token function">alert</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></span></code></pre>`);
|
|||
|
});
|
|||
|
|
|||
|
test("Test Njk Alias", t => {
|
|||
|
let mdLib = md();
|
|||
|
mdLib.set({
|
|||
|
highlight: markdownPrismJsOptions()
|
|||
|
});
|
|||
|
t.is(mdLib.render(`\`\`\`njk
|
|||
|
{% raw %}hello{% endraw %}
|
|||
|
\`\`\``).trim(), `<pre class="language-njk"><code class="language-njk"><span class="token delimiter punctuation">{%</span> <span class="token tag keyword">raw</span> <span class="token operator">%</span><span class="token punctuation">}</span><span class="token variable">hello</span><span class="token punctuation">{</span><span class="token operator">%</span> <span class="token variable">endraw</span> <span class="token operator">%</span><span class="token punctuation">}</span></code></pre>`);
|
|||
|
});
|
|||
|
|
|||
|
test("Test Nunjucks Alias", t => {
|
|||
|
let mdLib = md();
|
|||
|
mdLib.set({
|
|||
|
highlight: markdownPrismJsOptions()
|
|||
|
});
|
|||
|
t.is(mdLib.render(`\`\`\`nunjucks
|
|||
|
{% raw %}hello{% endraw %}
|
|||
|
\`\`\``).trim(), `<pre class="language-nunjucks"><code class="language-nunjucks"><span class="token delimiter punctuation">{%</span> <span class="token tag keyword">raw</span> <span class="token operator">%</span><span class="token punctuation">}</span><span class="token variable">hello</span><span class="token punctuation">{</span><span class="token operator">%</span> <span class="token variable">endraw</span> <span class="token operator">%</span><span class="token punctuation">}</span></code></pre>`);
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
// test("Test Markdown Highlighter Block Comment", t => {
|
|||
|
// let mdLib = md();
|
|||
|
// mdLib.set({
|
|||
|
// highlight: markdownPrismJsOptions({ alwaysWrapLineHighlights: true })
|
|||
|
// });
|
|||
|
// t.is(mdLib.render(`\`\`\`js
|
|||
|
// /*
|
|||
|
// * this is a string
|
|||
|
// */
|
|||
|
// \`\`\``).trim(), `<pre class="language-js"><code class="language-js"><span class="token comment"><span class="highlight-line">/*</span><br><span class="highlight-line"> * this is a string</span><br><span class="highlight-line"> */</span></span></code></pre>`);
|
|||
|
// });
|
|||
|
|
|||
|
// TODO this still ain’t working right with the line highlighter.
|
|||
|
// test("Test Markdown Highlighter GraphQL Example", t => {
|
|||
|
// let mdLib = md();
|
|||
|
// mdLib.set({
|
|||
|
// highlight: markdownPrismJsOptions({ alwaysWrapLineHighlights: true })
|
|||
|
// });
|
|||
|
// t.is(mdLib.render(`\`\`\`js
|
|||
|
// var schema = buildSchema(\`type Query {
|
|||
|
// hello: String
|
|||
|
// }\`);
|
|||
|
// \`\`\``).trim(), ``);
|
|||
|
// });
|