Skip to content

Commit

Permalink
Merge pull request #83 from curbengh/es6
Browse files Browse the repository at this point in the history
refactor: es6-fy
  • Loading branch information
segayuu committed Jul 30, 2019
2 parents 1852ffc + 0a6d75d commit c05b69a
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 72 deletions.
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

'use strict';

var renderer = require('./lib/renderer');
const renderer = require('./lib/renderer');

hexo.extend.renderer.register('md', 'html', renderer, true);
hexo.extend.renderer.register('markdown', 'html', renderer, true);
Expand Down
26 changes: 11 additions & 15 deletions lib/anchors.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
'use strict';

var Token = require('markdown-it/lib/token');
var sluggo = require('sluggo');
const Token = require('markdown-it/lib/token');
const sluggo = require('sluggo');

var renderPermalink = function(slug, opts, tokens, idx) {
const renderPermalink = function(slug, opts, tokens, idx) {
return tokens[idx + 1].children.unshift(Object.assign(new Token('link_open', 'a', 1), {
attrs: [['class', opts.permalinkClass], ['href', '#' + slug]]
}), Object.assign(new Token('text', '', 0), {
Expand All @@ -13,27 +13,23 @@ var renderPermalink = function(slug, opts, tokens, idx) {
}));
};

var anchor = function(md, opts) {
const anchor = function(md, opts) {
opts = Object.assign({}, anchor.defaults, opts);

var titleStore = {};
var originalHeadingOpen = md.renderer.rules.heading_open;
const titleStore = {};
const originalHeadingOpen = md.renderer.rules.heading_open;

md.renderer.rules.heading_open = function(tokens, idx, something, somethingelse, self) {
let args = [];

for (var _len = arguments.length, _key = 0; _key < _len; _key++) {
args.push(arguments[_key]);
}
md.renderer.rules.heading_open = function(...args) {
const [tokens, idx, something, somethingelse, self] = args; // eslint-disable-line no-unused-vars

if (tokens[idx].tag.substr(1) >= opts.level) {
var _tokens$idx;
let _tokens$idx;

var title = tokens[idx + 1].children.reduce(function(acc, t) {
const title = tokens[idx + 1].children.reduce((acc, t) => {
return acc + t.content;
}, '');

var slug = sluggo(title);
let slug = sluggo(title);

if (Object.prototype.isPrototypeOf.call(titleStore, slug)) {
titleStore[slug] = titleStore[slug] + 1;
Expand Down
10 changes: 5 additions & 5 deletions lib/renderer.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
'use strict';

module.exports = function(data, options) {
var MdIt = require('markdown-it');
var cfg = this.config.markdown;
var opt = cfg ? cfg : 'default';
var parser = opt === 'default' || opt === 'commonmark' || opt === 'zero'
const MdIt = require('markdown-it');
const cfg = this.config.markdown;
const opt = cfg ? cfg : 'default';
let parser = opt === 'default' || opt === 'commonmark' || opt === 'zero'
? new MdIt(opt)
: new MdIt(opt.render);

if (opt.plugins) {
parser = opt.plugins.reduce(function(parser, pugs) {
parser = opt.plugins.reduce((parser, pugs) => {
if (pugs instanceof Object && pugs.name) {
return parser.use(require(pugs.name), pugs.options);
}
Expand Down
102 changes: 51 additions & 51 deletions test/index.js
Original file line number Diff line number Diff line change
@@ -1,72 +1,72 @@
'use strict';
var fs = require('fs');
var render = require('../lib/renderer');
var should = require('chai').should(); // eslint-disable-line
var source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
const fs = require('fs');
const render = require('../lib/renderer');
const should = require('chai').should(); // eslint-disable-line
const source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');

describe('Hexo Renderer Markdown-it', function() {
describe('Hexo Renderer Markdown-it', () => {

it('should render GFM if no config provided', function() {
var parsed_without_config = fs.readFileSync('./test/fixtures/outputs/default.html', 'utf8');
var ctx = {
it('should render GFM if no config provided', () => {
const parsed_without_config = fs.readFileSync('./test/fixtures/outputs/default.html', 'utf8');
let ctx = {
config: {}
};
var parse = render.bind(ctx);
var result = parse({
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_without_config);
});

it('should render CommonMark if config is \'commonmark\'', function() {
var parsed_commonmark = fs.readFileSync('./test/fixtures/outputs/commonmark.html', 'utf8');
var ctx = {
it('should render CommonMark if config is \'commonmark\'', () => {
const parsed_commonmark = fs.readFileSync('./test/fixtures/outputs/commonmark.html', 'utf8');
let ctx = {
config: {
markdown: 'commonmark'
}
};
var parse = render.bind(ctx);
var result = parse({
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_commonmark);
});

it('should render a limited subset of Markdown if using \'zero\'', function() {
var parsed_zero = fs.readFileSync('./test/fixtures/outputs/zero.html', 'utf8');
var ctx = {
it('should render a limited subset of Markdown if using \'zero\'', () => {
const parsed_zero = fs.readFileSync('./test/fixtures/outputs/zero.html', 'utf8');
let ctx = {
config: {
markdown: 'zero'
}
};
var parse = render.bind(ctx);
var result = parse({
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_zero);
});

it('should render something very close to GFM with \'default\'', function() {
var parsed_gfm = fs.readFileSync('./test/fixtures/outputs/default.html', 'utf8');
var ctx = {
it('should render something very close to GFM with \'default\'', () => {
const parsed_gfm = fs.readFileSync('./test/fixtures/outputs/default.html', 'utf8');
let ctx = {
config: {
markdown: 'default'
}
};
var parse = render.bind(ctx);
var result = parse({
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_gfm);
});

it('should handle a custom configuration', function() {
var parsed_custom = fs.readFileSync('./test/fixtures/outputs/custom.html', 'utf8');
var ctx = {
it('should handle a custom configuration', () => {
const parsed_custom = fs.readFileSync('./test/fixtures/outputs/custom.html', 'utf8');
let ctx = {
config: {
markdown: {
render: {
Expand All @@ -81,18 +81,18 @@ describe('Hexo Renderer Markdown-it', function() {
}
}
};
var source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
var parse = render.bind(ctx);
var result = parse({
const source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_custom);
});

it('should render plugins if they are defined', function() {
var parsed_plugins = fs.readFileSync('./test/fixtures/outputs/plugins.html', 'utf8');
var ctx = {
it('should render plugins if they are defined', () => {
const parsed_plugins = fs.readFileSync('./test/fixtures/outputs/plugins.html', 'utf8');
let ctx = {
config: {
markdown: {
render: {
Expand All @@ -118,18 +118,18 @@ describe('Hexo Renderer Markdown-it', function() {
}
}
};
var source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
var parse = render.bind(ctx);
var result = parse({
const source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_plugins);
});

it('should render a plugin defined as an object', function() {
var parsed_plugins = fs.readFileSync('./test/fixtures/outputs/plugins.html', 'utf8');
var ctx = {
it('should render a plugin defined as an object', () => {
const parsed_plugins = fs.readFileSync('./test/fixtures/outputs/plugins.html', 'utf8');
let ctx = {
config: {
markdown: {
render: {
Expand All @@ -155,18 +155,18 @@ describe('Hexo Renderer Markdown-it', function() {
}
}
};
var source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
var parse = render.bind(ctx);
var result = parse({
const source = fs.readFileSync('./test/fixtures/markdownit.md', 'utf8');
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
result.should.equal(parsed_plugins);
});

it('should render anchor-headers if they are defined', function() {
var anchors_with_permalinks = fs.readFileSync('./test/fixtures/outputs/anchors.html', 'utf8');
var ctx = {
it('should render anchor-headers if they are defined', () => {
const anchors_with_permalinks = fs.readFileSync('./test/fixtures/outputs/anchors.html', 'utf8');
let ctx = {
config: {
markdown: {
anchors: {
Expand All @@ -179,8 +179,8 @@ describe('Hexo Renderer Markdown-it', function() {
}
}
};
var parse = render.bind(ctx);
var result = parse({
const parse = render.bind(ctx);
const result = parse({
text: source
});
ctx = {};
Expand All @@ -196,9 +196,9 @@ describe('Hexo Renderer Markdown-it', function() {
}
}
};
var anchorsNoPerm = '<h1 id="this-is-an-h1-title">This is an H1 title</h1>\n<h1 id="this-is-an-h1-title">This is an H1 title</h1>\n';
var anchorsNoPerm_parse = render.bind(ctx);
var anchorsNoPerm_result = anchorsNoPerm_parse({
const anchorsNoPerm = '<h1 id="this-is-an-h1-title">This is an H1 title</h1>\n<h1 id="this-is-an-h1-title">This is an H1 title</h1>\n';
const anchorsNoPerm_parse = render.bind(ctx);
const anchorsNoPerm_result = anchorsNoPerm_parse({
text: '# This is an H1 title\n# This is an H1 title'
});
ctx = {};
Expand Down

0 comments on commit c05b69a

Please sign in to comment.