Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Bump higlightjs to v10 #17

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Build

on:
push:
pull_request:
branches:
- master

jobs:
test-linux:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [ 10.x, 12.x, 14.x, 15.x ]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run test
run: npm test

test-mac:
runs-on: macos-latest

strategy:
matrix:
node-version: [ 10.x, 12.x, 14.x, 15.x ]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run test
run: npm test

test-windows:
runs-on: windows-latest

strategy:
matrix:
node-version: [ 10.x, 12.x, 14.x, 15.x ]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm ci
- name: Run test
run: npm test
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -25,4 +25,3 @@ vendor
temp
tmp
TODO.md
package-lock.json
12 changes: 5 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -5,13 +5,11 @@ os:
language: node_js
node_js:
- node
- '8'
- '7'
- '6'
- '5'
- '4'
- '0.12'
- '0.10'
- '15'
- '14'
- '13'
- '12'
- '10'
matrix:
allow_failures: []
fast_finish: true
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# helper-markdown [![NPM version](https://img.shields.io/npm/v/helper-markdown.svg?style=flat)](https://www.npmjs.com/package/helper-markdown) [![NPM monthly downloads](https://img.shields.io/npm/dm/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![NPM total downloads](https://img.shields.io/npm/dt/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![Linux Build Status](https://img.shields.io/travis/helpers/helper-markdown.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/helper-markdown)
# helper-markdown [![NPM version](https://img.shields.io/npm/v/helper-markdown.svg?style=flat)](https://www.npmjs.com/package/helper-markdown) [![NPM monthly downloads](https://img.shields.io/npm/dm/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![NPM total downloads](https://img.shields.io/npm/dt/helper-markdown.svg?style=flat)](https://npmjs.org/package/helper-markdown) [![Linux Build Status](https://img.shields.io/travis/helpers/helper-markdown.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/helper-markdown)[![Build](https://github.com/helpers/helper-markdown/workflows/Build/badge.svg)](https://github.com/helpers/helper-markdown/actions?query=workflow%3A%22Build%22)


> Markdown template helper. Uses remarkable to render markdown in templates. Should work with Handlebars, Lo-Dash or any template engine that supports helper functions.

16 changes: 8 additions & 8 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var hljs = require('highlight.js');
var utils = require('handlebars-utils');
var Remarkable = require('remarkable');
var defaults = { html: true, breaks: true, highlight: highlight };
const hljs = require('highlight.js');
const utils = require('handlebars-utils');
const Remarkable = require('remarkable');
const defaults = { html: true, breaks: true, highlight: highlight };

module.exports = function(config) {
if (typeof config === 'string' || utils.isOptions(config)) {
@@ -22,16 +22,16 @@ module.exports = function(config) {
locals = {};
}

var ctx = utils.context(this, locals, options);
var opts = utils.options(this, locals, options);
const ctx = utils.context(this, locals, options);
let opts = utils.options(this, locals, options);
opts = Object.assign({}, defaults, config, opts);

if (opts.hasOwnProperty('lang')) {
opts.langPrefix = opts.lang;
}

var md = new Remarkable(opts);
var val = utils.value(str, ctx, options);
const md = new Remarkable(opts);
const val = utils.value(str, ctx, options);
return md.render(val);
}
return markdown;
1,653 changes: 1,653 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@
},
"dependencies": {
"handlebars-utils": "^1.0.2",
"highlight.js": "^9.12.0",
"highlight.js": "^10.5.0",
"remarkable": "^1.7.1"
},
"devDependencies": {
92 changes: 46 additions & 46 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -1,89 +1,89 @@
'use strict';

require('mocha');
var _ = require('lodash');
var assert = require('assert');
var handlebars = require('handlebars');
var markdown = require('..');

describe('helper-markdown', function() {
describe('main export', function() {
it('should render markdown:', function() {
assert.equal(markdown('# heading'), '<h1>heading</h1>\n');
const _ = require('lodash');
const assert = require('assert');
const handlebars = require('handlebars');
const markdown = require('..');

describe('helper-markdown', () => {
describe('main export', () => {
it('should render markdown:', () => {
assert.strictEqual(markdown('# heading'), '<h1>heading</h1>\n');
});

it('should highlight code blocks', function() {
var html = markdown('```js\nvar foo = "bar";\n```\n', {});
assert.equal(html, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">"bar"</span>;\n</code></pre>\n');
it('should highlight code blocks', () => {
const html = markdown('```js\nvar foo = "bar";\n```\n', {});
assert.strictEqual(html, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">&quot;bar&quot;</span>;\n</code></pre>\n');
});

it('should pass options to remarkable', function() {
var a = markdown('abc https://github.com/jonschlinkert/remarkable xyz', {linkify: true});
assert.equal(a, '<p>abc <a href="https://github.com/jonschlinkert/remarkable">https://github.com/jonschlinkert/remarkable</a> xyz</p>\n');
it('should pass options to remarkable', () => {
const a = markdown('abc https://github.com/jonschlinkert/remarkable xyz', {linkify: true});
assert.strictEqual(a, '<p>abc <a href="https://github.com/jonschlinkert/remarkable">https://github.com/jonschlinkert/remarkable</a> xyz</p>\n');

var b = markdown('abc https://github.com/jonschlinkert/remarkable xyz', {linkify: false});
assert.equal(b, '<p>abc https://github.com/jonschlinkert/remarkable xyz</p>\n');
const b = markdown('abc https://github.com/jonschlinkert/remarkable xyz', {linkify: false});
assert.strictEqual(b, '<p>abc https://github.com/jonschlinkert/remarkable xyz</p>\n');
});

it('should pass options to highlight.js:', function() {
var html = markdown('```js\nvar foo = "bar";\n```\n', {langPrefix: 'language-'});
assert.equal(html, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">"bar"</span>;\n</code></pre>\n');
it('should pass options to highlight.js:', () => {
const html = markdown('```js\nvar foo = "bar";\n```\n', {langPrefix: 'language-'});
assert.strictEqual(html, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">&quot;bar&quot;</span>;\n</code></pre>\n');
});
});

describe('handlebars:', function() {
it('should work as a handlebars helper:', function() {
describe('handlebars:', () => {
it('should work as a handlebars helper:', () => {
handlebars.registerHelper('markdown', markdown({}));
assert.equal(handlebars.compile('{{#markdown}}# heading{{/markdown}}')(), '<h1>heading</h1>\n');
assert.strictEqual(handlebars.compile('{{#markdown}}# heading{{/markdown}}')(), '<h1>heading</h1>\n');
});

it('should pass hash options to remarkable:', function() {
it('should pass hash options to remarkable:', () => {
handlebars.registerHelper('markdown', markdown({}));

// `linkify: true`
var a = handlebars.compile('{{#markdown linkify=true}}abc https://github.com/jonschlinkert/remarkable xyz{{/markdown}}')();
assert.equal(a, '<p>abc <a href="https://github.com/jonschlinkert/remarkable">https://github.com/jonschlinkert/remarkable</a> xyz</p>\n');
const a = handlebars.compile('{{#markdown linkify=true}}abc https://github.com/jonschlinkert/remarkable xyz{{/markdown}}')();
assert.strictEqual(a, '<p>abc <a href="https://github.com/jonschlinkert/remarkable">https://github.com/jonschlinkert/remarkable</a> xyz</p>\n');

// `linkify: false`
var b = handlebars.compile('{{#markdown linkify=false}}abc https://github.com/jonschlinkert/remarkable xyz{{/markdown}}')();
assert.equal(b, '<p>abc https://github.com/jonschlinkert/remarkable xyz</p>\n');
const b = handlebars.compile('{{#markdown linkify=false}}abc https://github.com/jonschlinkert/remarkable xyz{{/markdown}}')();
assert.strictEqual(b, '<p>abc https://github.com/jonschlinkert/remarkable xyz</p>\n');
});

it('should pass hash options to highlight.js:', function() {
it('should pass hash options to highlight.js:', () => {
handlebars.registerHelper('markdown', markdown({}));

// `langPrefix = language-`
var a = handlebars.compile('{{#markdown}}```js\nvar foo = "bar";\n```\n{{/markdown}}')();
assert.equal(a, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">"bar"</span>;\n</code></pre>\n');
const a = handlebars.compile('{{#markdown}}```js\nvar foo = "bar";\n```\n{{/markdown}}')();
assert.strictEqual(a, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">&quot;bar&quot;</span>;\n</code></pre>\n');

// `langPrefix = language-`
var b = handlebars.compile('{{#markdown langPrefix="language-"}}```js\nvar foo = "bar";\n```\n{{/markdown}}')();
assert.equal(b, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">"bar"</span>;\n</code></pre>\n');
const b = handlebars.compile('{{#markdown langPrefix="language-"}}```js\nvar foo = "bar";\n```\n{{/markdown}}')();
assert.strictEqual(b, '<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = <span class="hljs-string">&quot;bar&quot;</span>;\n</code></pre>\n');
});
});

describe('lodash:', function() {
it('should work as a lodash mixin:', function() {
describe('lodash:', () => {
it('should work as a lodash mixin:', () => {
_.mixin({markdown: markdown});
assert.equal(_.template('<%= _.markdown("# heading") %>')({}), '<h1>heading</h1>\n');
assert.strictEqual(_.template('<%= _.markdown("# heading") %>')({}), '<h1>heading</h1>\n');
});

it('should pass options to remarkable:', function() {
it('should pass options to remarkable:', () => {
_.mixin({markdown: markdown({})});
var a = _.template('<%= _.markdown("foo\\n```js\\nvar foo = {};\\n```\\nbar") %>')({});
assert.equal(a, '<p>foo</p>\n<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = {};\n</code></pre>\n<p>bar</p>\n');
const a = _.template('<%= _.markdown("foo\\n```js\\nvar foo = {};\\n```\\nbar") %>')({});
assert.strictEqual(a, '<p>foo</p>\n<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = {};\n</code></pre>\n<p>bar</p>\n');

var b = _.template('<%= _.markdown("foo\\n```js\\nvar foo = {};\\n```\\nbar", {langPrefix: \'language-\'}) %>')({});
assert.equal(b, '<p>foo</p>\n<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = {};\n</code></pre>\n<p>bar</p>\n');
const b = _.template('<%= _.markdown("foo\\n```js\\nvar foo = {};\\n```\\nbar", {langPrefix: \'language-\'}) %>')({});
assert.strictEqual(b, '<p>foo</p>\n<pre><code class="language-js"><span class="hljs-keyword">var</span> foo = {};\n</code></pre>\n<p>bar</p>\n');
});

it('should work when passed to lodash as a string:', function() {
assert.equal(_.template('<%= markdown("# heading") %>')({markdown: markdown}), '<h1>heading</h1>\n');
it('should work when passed to lodash as a string:', () => {
assert.strictEqual(_.template('<%= markdown("# heading") %>')({markdown: markdown}), '<h1>heading</h1>\n');
});

it('should work as a lodash import:', function() {
var settings = {imports: {markdown: markdown}};
assert.equal(_.template('<%= markdown("# heading") %>', settings)({}), '<h1>heading</h1>\n');
it('should work as a lodash import:', () => {
const settings = {imports: {markdown: markdown}};
assert.strictEqual(_.template('<%= markdown("# heading") %>', settings)({}), '<h1>heading</h1>\n');
});
});
});