From da1094db84769892cd45efe336f3d4d1acf1b6e5 Mon Sep 17 00:00:00 2001 From: ed Date: Sun, 3 May 2020 20:54:38 +0200 Subject: [PATCH] patches from marked.js/master --- scripts/deps-docker/Dockerfile | 5 ++++ scripts/deps-docker/marked-ln.patch | 46 ++++++++++++++--------------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/scripts/deps-docker/Dockerfile b/scripts/deps-docker/Dockerfile index a9e9bd9f..2e45c02a 100644 --- a/scripts/deps-docker/Dockerfile +++ b/scripts/deps-docker/Dockerfile @@ -97,9 +97,14 @@ RUN cd ogvjs-$ver_ogvjs \ # build marked +RUN wget https://github.com/markedjs/marked/commit/5c166d4164791f643693478e4ac094d63d6e0c9a.patch -O marked-git-1.patch \ + && wget https://patch-diff.githubusercontent.com/raw/markedjs/marked/pull/1652.patch -O marked-git-2.patch + COPY marked.patch /z/ COPY marked-ln.patch /z/ RUN cd marked-$ver_marked \ + && patch -p1 < /z/marked-git-1.patch \ + && patch -p1 < /z/marked-git-2.patch \ && patch -p1 < /z/marked-ln.patch \ && patch -p1 < /z/marked.patch \ && npm run build \ diff --git a/scripts/deps-docker/marked-ln.patch b/scripts/deps-docker/marked-ln.patch index 26725f08..0823df41 100644 --- a/scripts/deps-docker/marked-ln.patch +++ b/scripts/deps-docker/marked-ln.patch @@ -1,5 +1,5 @@ diff --git a/src/Lexer.js b/src/Lexer.js -adds linetracking to marked.js v1.0.0; +adds linetracking to marked.js v1.0.0 +git; add data-ln="%d" to most tags, %d is the source markdown line --- a/src/Lexer.js +++ b/src/Lexer.js @@ -28,8 +28,8 @@ add data-ln="%d" to most tags, %d is the source markdown line @@ -113,10 +125,15 @@ module.exports = class Lexer { blockTokens(src, tokens = [], top = true) { src = src.replace(/^ +$/gm, ''); -- let token, i, l; -+ let token, i, l, ln; +- let token, i, l, lastToken; ++ let token, i, l, lastToken, ln; while (src) { + // this.ln will be bumped by recursive calls into this func; @@ -46,33 +46,33 @@ add data-ln="%d" to most tags, %d is the source markdown line if (token = this.tokenizer.code(src, tokens)) { src = src.substring(token.raw.length); + this.set_ln(token); - tokens.push(token); - continue; -@@ -135,4 +153,5 @@ module.exports = class Lexer { + if (token.type) { + tokens.push(token); +@@ -141,4 +159,5 @@ module.exports = class Lexer { if (token = this.tokenizer.fences(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -142,4 +161,5 @@ module.exports = class Lexer { +@@ -148,4 +167,5 @@ module.exports = class Lexer { if (token = this.tokenizer.heading(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -149,4 +169,5 @@ module.exports = class Lexer { +@@ -155,4 +175,5 @@ module.exports = class Lexer { if (token = this.tokenizer.nptable(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -156,4 +177,5 @@ module.exports = class Lexer { +@@ -162,4 +183,5 @@ module.exports = class Lexer { if (token = this.tokenizer.hr(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -164,4 +186,7 @@ module.exports = class Lexer { +@@ -170,4 +192,7 @@ module.exports = class Lexer { src = src.substring(token.raw.length); token.tokens = this.blockTokens(token.text, [], top); + // recursive call to blockTokens probably bumped this.ln, @@ -80,7 +80,7 @@ add data-ln="%d" to most tags, %d is the source markdown line + this.set_ln(token, ln); tokens.push(token); continue; -@@ -174,5 +199,9 @@ module.exports = class Lexer { +@@ -180,5 +205,9 @@ module.exports = class Lexer { for (i = 0; i < l; i++) { token.items[i].tokens = this.blockTokens(token.items[i].text, [], false); + // list entries don't bump the linecounter, so let's @@ -90,43 +90,43 @@ add data-ln="%d" to most tags, %d is the source markdown line + this.set_ln(token, ln); tokens.push(token); continue; -@@ -182,4 +211,5 @@ module.exports = class Lexer { +@@ -188,4 +217,5 @@ module.exports = class Lexer { if (token = this.tokenizer.html(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -189,4 +219,5 @@ module.exports = class Lexer { +@@ -195,4 +225,5 @@ module.exports = class Lexer { if (top && (token = this.tokenizer.def(src))) { src = src.substring(token.raw.length); + this.set_ln(token); if (!this.tokens.links[token.tag]) { this.tokens.links[token.tag] = { -@@ -201,4 +232,5 @@ module.exports = class Lexer { +@@ -207,4 +238,5 @@ module.exports = class Lexer { if (token = this.tokenizer.table(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -208,4 +240,5 @@ module.exports = class Lexer { +@@ -214,4 +246,5 @@ module.exports = class Lexer { if (token = this.tokenizer.lheading(src)) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -215,4 +248,5 @@ module.exports = class Lexer { +@@ -221,4 +254,5 @@ module.exports = class Lexer { if (top && (token = this.tokenizer.paragraph(src))) { src = src.substring(token.raw.length); + this.set_ln(token); tokens.push(token); continue; -@@ -222,4 +256,5 @@ module.exports = class Lexer { - if (token = this.tokenizer.text(src)) { +@@ -228,4 +262,5 @@ module.exports = class Lexer { + if (token = this.tokenizer.text(src, tokens)) { src = src.substring(token.raw.length); + this.set_ln(token); - tokens.push(token); - continue; -@@ -251,4 +286,7 @@ module.exports = class Lexer { + if (token.type) { + tokens.push(token); +@@ -263,4 +298,7 @@ module.exports = class Lexer { for (i = 0; i < l; i++) { token = tokens[i]; + // this.ln is at EOF when inline() is invoked; @@ -134,7 +134,7 @@ add data-ln="%d" to most tags, %d is the source markdown line + this.ln = token.ln || this.ln; switch (token.type) { case 'paragraph': -@@ -374,4 +412,6 @@ module.exports = class Lexer { +@@ -386,4 +424,6 @@ module.exports = class Lexer { if (token = this.tokenizer.br(src)) { src = src.substring(token.raw.length); + // no need to reset (no more blockTokens anyways) @@ -142,7 +142,6 @@ add data-ln="%d" to most tags, %d is the source markdown line tokens.push(token); continue; diff --git a/src/Parser.js b/src/Parser.js -index bad3ac7..882da47 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -18,4 +18,5 @@ module.exports = class Parser { @@ -214,7 +213,6 @@ index bad3ac7..882da47 100644 break; } diff --git a/src/Renderer.js b/src/Renderer.js -index a86732c..7ed907b 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -11,6 +11,12 @@ module.exports = class Renderer {