Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: markedjs/marked
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.0.3
Choose a base ref
...
head repository: markedjs/marked
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.0.4
Choose a head ref
Loading
Showing with 1,586 additions and 814 deletions.
  1. +3 −3 build-docs.js
  2. +4 −4 docs/USING_ADVANCED.md
  3. +49 −41 lib/marked.esm.js
  4. +88 −85 lib/marked.js
  5. +1 −1 marked.min.js
  6. +1,377 −664 package-lock.json
  7. +13 −13 package.json
  8. +3 −3 src/rules.js
  9. +24 −0 test/specs/new/indented_details.html
  10. +24 −0 test/specs/new/indented_details.md
6 changes: 3 additions & 3 deletions build-docs.js
Original file line number Diff line number Diff line change
@@ -36,11 +36,11 @@ async function build(currentDir, tmpl) {
const parsed = parse(filename);
if (parsed.ext === '.md' && isUppercase(parsed.name)) {
const html = marked(buffer.toString('utf8'), {
highlight: (code, lang) => {
if (!lang) {
highlight: (code, language) => {
if (!language) {
return highlightAuto(code).value;
}
return highlight(lang, code).value;
return highlight(code, { language }).value;
}
});
buffer = Buffer.from(tmpl
8 changes: 4 additions & 4 deletions docs/USING_ADVANCED.md
Original file line number Diff line number Diff line change
@@ -17,13 +17,13 @@ marked(markdownString [,options] [,callback])
const marked = require('marked');

// Set options
// `highlight` example uses `highlight.js`
// `highlight` example uses https://highlightjs.org
marked.setOptions({
renderer: new marked.Renderer(),
highlight: function(code, language) {
highlight: function(code, lang) {
const hljs = require('highlight.js');
const validLanguage = hljs.getLanguage(language) ? language : 'plaintext';
return hljs.highlight(validLanguage, code).value;
const language = hljs.getLanguage(lang) ? lang : 'plaintext';
return hljs.highlight(code, { language }).value;
},
pedantic: false,
gfm: true,
90 changes: 49 additions & 41 deletions lib/marked.esm.js
Original file line number Diff line number Diff line change
@@ -9,13 +9,9 @@
* The code in this file is generated from files in ./src/
*/

function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
}
var defaults$5 = {exports: {}};

var defaults$5 = createCommonjsModule(function (module) {
function getDefaults() {
function getDefaults$1() {
return {
baseUrl: null,
breaks: false,
@@ -38,20 +34,20 @@ function getDefaults() {
};
}

function changeDefaults(newDefaults) {
module.exports.defaults = newDefaults;
function changeDefaults$1(newDefaults) {
defaults$5.exports.defaults = newDefaults;
}

module.exports = {
defaults: getDefaults(),
getDefaults,
changeDefaults
defaults$5.exports = {
defaults: getDefaults$1(),
getDefaults: getDefaults$1,
changeDefaults: changeDefaults$1
};
});

/**
* Helpers
*/

const escapeTest = /[&<>"']/;
const escapeReplace = /[&<>"']/g;
const escapeTestNoEncode = /[<>"']|&(?!#?\w+;)/;
@@ -310,7 +306,7 @@ var helpers = {
repeatString: repeatString$1
};

const { defaults: defaults$4 } = defaults$5;
const { defaults: defaults$4 } = defaults$5.exports;
const {
rtrim,
splitCells,
@@ -1064,9 +1060,9 @@ const block$1 = {
+ '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
+ '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
+ '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
+ '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
+ '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
+ '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
+ '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6)
+ '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
+ '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
+ ')',
def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
nptable: noopTest,
@@ -1352,7 +1348,8 @@ var rules = {
inline: inline$1
};

const { defaults: defaults$3 } = defaults$5;
const Tokenizer$1 = Tokenizer_1;
const { defaults: defaults$3 } = defaults$5.exports;
const { block, inline } = rules;
const { repeatString } = helpers;

@@ -1405,7 +1402,7 @@ var Lexer_1 = class Lexer {
this.tokens = [];
this.tokens.links = Object.create(null);
this.options = options || defaults$3;
this.options.tokenizer = this.options.tokenizer || new Tokenizer_1();
this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();
this.tokenizer = this.options.tokenizer;
this.tokenizer.options = this.options;

@@ -1840,7 +1837,7 @@ var Lexer_1 = class Lexer {
}
};

const { defaults: defaults$2 } = defaults$5;
const { defaults: defaults$2 } = defaults$5.exports;
const {
cleanUrl,
escape: escape$1
@@ -2011,6 +2008,7 @@ var Renderer_1 = class Renderer {
* TextRenderer
* returns only the textual part of the token
*/

var TextRenderer_1 = class TextRenderer {
// no need for block level renderers
strong(text) {
@@ -2053,6 +2051,7 @@ var TextRenderer_1 = class TextRenderer {
/**
* Slugger generates header id
*/

var Slugger_1 = class Slugger {
constructor() {
this.seen = {};
@@ -2100,7 +2099,10 @@ var Slugger_1 = class Slugger {
}
};

const { defaults: defaults$1 } = defaults$5;
const Renderer$1 = Renderer_1;
const TextRenderer$1 = TextRenderer_1;
const Slugger$1 = Slugger_1;
const { defaults: defaults$1 } = defaults$5.exports;
const {
unescape
} = helpers;
@@ -2111,11 +2113,11 @@ const {
var Parser_1 = class Parser {
constructor(options) {
this.options = options || defaults$1;
this.options.renderer = this.options.renderer || new Renderer_1();
this.options.renderer = this.options.renderer || new Renderer$1();
this.renderer = this.options.renderer;
this.renderer.options = this.options;
this.textRenderer = new TextRenderer_1();
this.slugger = new Slugger_1();
this.textRenderer = new TextRenderer$1();
this.slugger = new Slugger$1();
}

/**
@@ -2361,6 +2363,12 @@ var Parser_1 = class Parser {
}
};

const Lexer = Lexer_1;
const Parser = Parser_1;
const Tokenizer = Tokenizer_1;
const Renderer = Renderer_1;
const TextRenderer = TextRenderer_1;
const Slugger = Slugger_1;
const {
merge,
checkSanitizeDeprecation,
@@ -2370,7 +2378,7 @@ const {
getDefaults,
changeDefaults,
defaults
} = defaults$5;
} = defaults$5.exports;

/**
* Marked
@@ -2398,7 +2406,7 @@ function marked(src, opt, callback) {
let tokens;

try {
tokens = Lexer_1.lex(src, opt);
tokens = Lexer.lex(src, opt);
} catch (e) {
return callback(e);
}
@@ -2408,7 +2416,7 @@ function marked(src, opt, callback) {

if (!err) {
try {
out = Parser_1.parse(tokens, opt);
out = Parser.parse(tokens, opt);
} catch (e) {
err = e;
}
@@ -2460,11 +2468,11 @@ function marked(src, opt, callback) {
}

try {
const tokens = Lexer_1.lex(src, opt);
const tokens = Lexer.lex(src, opt);
if (opt.walkTokens) {
marked.walkTokens(tokens, opt.walkTokens);
}
return Parser_1.parse(tokens, opt);
return Parser.parse(tokens, opt);
} catch (e) {
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
if (opt.silent) {
@@ -2498,7 +2506,7 @@ marked.defaults = defaults;
marked.use = function(extension) {
const opts = merge({}, extension);
if (extension.renderer) {
const renderer = marked.defaults.renderer || new Renderer_1();
const renderer = marked.defaults.renderer || new Renderer();
for (const prop in extension.renderer) {
const prevRenderer = renderer[prop];
renderer[prop] = (...args) => {
@@ -2512,7 +2520,7 @@ marked.use = function(extension) {
opts.renderer = renderer;
}
if (extension.tokenizer) {
const tokenizer = marked.defaults.tokenizer || new Tokenizer_1();
const tokenizer = marked.defaults.tokenizer || new Tokenizer();
for (const prop in extension.tokenizer) {
const prevTokenizer = tokenizer[prop];
tokenizer[prop] = (...args) => {
@@ -2586,11 +2594,11 @@ marked.parseInline = function(src, opt) {
checkSanitizeDeprecation(opt);

try {
const tokens = Lexer_1.lexInline(src, opt);
const tokens = Lexer.lexInline(src, opt);
if (opt.walkTokens) {
marked.walkTokens(tokens, opt.walkTokens);
}
return Parser_1.parseInline(tokens, opt);
return Parser.parseInline(tokens, opt);
} catch (e) {
e.message += '\nPlease report this to https://github.com/markedjs/marked.';
if (opt.silent) {
@@ -2606,18 +2614,18 @@ marked.parseInline = function(src, opt) {
* Expose
*/

marked.Parser = Parser_1;
marked.parser = Parser_1.parse;
marked.Parser = Parser;
marked.parser = Parser.parse;

marked.Renderer = Renderer_1;
marked.TextRenderer = TextRenderer_1;
marked.Renderer = Renderer;
marked.TextRenderer = TextRenderer;

marked.Lexer = Lexer_1;
marked.lexer = Lexer_1.lex;
marked.Lexer = Lexer;
marked.lexer = Lexer.lex;

marked.Tokenizer = Tokenizer_1;
marked.Tokenizer = Tokenizer;

marked.Slugger = Slugger_1;
marked.Slugger = Slugger;

marked.parse = marked;

Loading