Skip to content

Commit

Permalink
fix: fix node v12 (#2109)
Browse files Browse the repository at this point in the history
  • Loading branch information
UziTech committed Jun 16, 2021
1 parent a86701f commit af14068
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 20 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Expand Up @@ -10,7 +10,7 @@ jobs:
if: "!contains(github.event.head_commit.message, '[skip ci]')"
strategy:
matrix:
node_version: ['lts/*', 'node']
node_version: [12, 'lts/*', 'node']
runs-on: ubuntu-latest
steps:
- name: Checkout Code
Expand Down
2 changes: 1 addition & 1 deletion package.json
Expand Up @@ -83,6 +83,6 @@
"preversion": "npm run build && (git diff --quiet || git commit -am build)"
},
"engines": {
"node": ">= 8.16.2"
"node": ">= 12"
}
}
10 changes: 6 additions & 4 deletions src/Lexer.js
Expand Up @@ -126,7 +126,8 @@ module.exports = class Lexer {
let token, i, l, lastToken, cutSrc, lastParagraphClipped;

while (src) {
if (this.options?.extensions?.block
if (this.options.extensions
&& this.options.extensions.block
&& this.options.extensions.block.some((extTokenizer) => {
if (token = extTokenizer.call(this, src, tokens)) {
src = src.substring(token.raw.length);
Expand Down Expand Up @@ -244,7 +245,7 @@ module.exports = class Lexer {
// top-level paragraph
// prevent paragraph consuming extensions by clipping 'src' to extension start
cutSrc = src;
if (this.options.extensions?.startBlock) {
if (this.options.extensions && this.options.extensions.startBlock) {
let startIndex = Infinity;
const tempSrc = src.slice(1);
let tempStart;
Expand Down Expand Up @@ -400,7 +401,8 @@ module.exports = class Lexer {
keepPrevChar = false;

// extensions
if (this.options?.extensions?.inline
if (this.options.extensions
&& this.options.extensions.inline
&& this.options.extensions.inline.some((extTokenizer) => {
if (token = extTokenizer.call(this, src, tokens)) {
src = src.substring(token.raw.length);
Expand Down Expand Up @@ -507,7 +509,7 @@ module.exports = class Lexer {
// text
// prevent inlineText consuming extensions by clipping 'src' to extension start
cutSrc = src;
if (this.options.extensions?.startInline) {
if (this.options.extensions && this.options.extensions.startInline) {
let startIndex = Infinity;
const tempSrc = src.slice(1);
let tempStart;
Expand Down
4 changes: 2 additions & 2 deletions src/Parser.js
Expand Up @@ -65,7 +65,7 @@ module.exports = class Parser {
token = tokens[i];

// Run any renderer extensions
if (this.options.extensions?.renderers?.[token.type]) {
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
ret = this.options.extensions.renderers[token.type].call(this, token);
if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
out += ret || '';
Expand Down Expand Up @@ -221,7 +221,7 @@ module.exports = class Parser {
token = tokens[i];

// Run any renderer extensions
if (this.options.extensions?.renderers?.[token.type]) {
if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
ret = this.options.extensions.renderers[token.type].call(this, token);
if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
out += ret || '';
Expand Down
9 changes: 4 additions & 5 deletions src/marked.js
Expand Up @@ -155,7 +155,7 @@ marked.use = function(...args) {
throw new Error('extension name required');
}
if (ext.renderer) { // Renderer extensions
const prevRenderer = extensions.renderers?.[ext.name];
const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;
if (prevRenderer) {
// Replace extension with func to run new extension but fall back if false
extensions.renderers[ext.name] = function(...args) {
Expand Down Expand Up @@ -275,12 +275,11 @@ marked.walkTokens = function(tokens, callback) {
break;
}
default: {
if (marked.defaults?.extensions?.childTokens?.[token.type]) { // Walk any extensions
marked.defaults?.extensions.childTokens[token.type].forEach(function(childTokens) {
if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions
marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {
marked.walkTokens(token[childTokens], callback);
});
}
if (token.tokens && !marked.defaults?.extensions?.childTokens[token.type]) {
} else if (token.tokens) {
marked.walkTokens(token.tokens, callback);
}
}
Expand Down
24 changes: 17 additions & 7 deletions test/unit/marked-spec.js
Expand Up @@ -169,7 +169,7 @@ describe('use extension', () => {
extensions: [{
name: 'underline',
level: 'block',
start(src) { return src.match(/:/)?.index; },
start(src) { return src.indexOf(':'); },
tokenizer(src) {
const rule = /^:([^\n]*):(?:\n|$)/;
const match = rule.exec(src);
Expand All @@ -195,7 +195,7 @@ describe('use extension', () => {
const underline = {
name: 'underline',
level: 'inline',
start(src) { return src.match(/=/)?.index; },
start(src) { return src.indexOf('='); },
tokenizer(src) {
const rule = /^=([^=]+)=/;
const match = rule.exec(src);
Expand All @@ -220,7 +220,12 @@ describe('use extension', () => {
const descriptionlist = {
name: 'descriptionList',
level: 'block',
start(src) { return src.match(/:[^:\n]/)?.index; },
start(src) {
const match = src.match(/:[^:\n]/);
if (match) {
return match.index;
}
},
tokenizer(src, tokens) {
const rule = /^(?::[^:\n]+:[^:\n]*(?:\n|$))+/;
const match = rule.exec(src);
Expand All @@ -241,7 +246,7 @@ describe('use extension', () => {
const description = {
name: 'description',
level: 'inline',
start(src) { return src.match(/:/)?.index; },
start(src) { return src.indexOf(':'); },
tokenizer(src, tokens) {
const rule = /^:([^:\n]+):([^:\n]*)(?:\n|$)/;
const match = rule.exec(src);
Expand Down Expand Up @@ -415,7 +420,7 @@ describe('use extension', () => {
extensions: [{
name: 'walkableDescription',
level: 'inline',
start(src) { return src.match(/:/)?.index; },
start(src) { return src.indexOf(':'); },
tokenizer(src, tokens) {
const rule = /^:([^:\n]+):([^:\n]*)(?:\n|$)/;
const match = rule.exec(src);
Expand Down Expand Up @@ -601,7 +606,12 @@ used extension2 walked</p>
extensions: [{
name: 'inlineStyleTag',
level: 'inline',
start(src) { return src.match(/ *{[^\{]/)?.index; },
start(src) {
const match = src.match(/ *{[^\{]/);
if (match) {
return match.index;
}
},
tokenizer(src, tokens) {
const rule = /^ *{([^\{\}\n]+)}$/;
const match = rule.exec(src);
Expand Down Expand Up @@ -629,7 +639,7 @@ used extension2 walked</p>
walkTokens(token) {
if (token.tokens) {
const finalChildToken = token.tokens[token.tokens.length - 1];
if (finalChildToken?.type === 'inlineStyleTag') {
if (finalChildToken && finalChildToken.type === 'inlineStyleTag') {
token.originalType = token.type;
token.type = 'styled';
token.style = `style="color:${finalChildToken.text};"`;
Expand Down

1 comment on commit af14068

@vercel
Copy link

@vercel vercel bot commented on af14068 Jun 16, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.