Skip to content

Commit 4bd480e

Browse files
author
Jiang Shang
committed
bugfix & features
1 parent 0438f99 commit 4bd480e

File tree

3 files changed

+33
-24
lines changed

3 files changed

+33
-24
lines changed

dist/Parser.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,13 @@ var Parser = (function () {
194194

195195
/**
196196
* @param text
197+
* @param clearHolders
197198
* @return string
198199
*/
199200
}, {
200201
key: 'releaseHolder',
201202
value: function releaseHolder(text) {
203+
var clearHolders = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
202204

203205
var deep = 0;
204206
while (text.indexOf("|\r") !== -1 && deep < 10) {
@@ -208,9 +210,9 @@ var Parser = (function () {
208210
}
209211
deep++;
210212
}
211-
212-
this.holders.clear();
213-
213+
if (clearHolders) {
214+
this.holders.clear();
215+
}
214216
return text;
215217
}
216218

@@ -219,6 +221,7 @@ var Parser = (function () {
219221
*
220222
* @param string text
221223
* @param string whiteList
224+
* @param bool clearHolders
222225
* @return string
223226
*/
224227
}, {
@@ -227,6 +230,7 @@ var Parser = (function () {
227230
var _this3 = this;
228231

229232
var whiteList = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];
233+
var clearHolders = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];
230234

231235
text = this.call('beforeParseInline', text);
232236
var _this = this;
@@ -261,7 +265,7 @@ var Parser = (function () {
261265

262266
if (id === -1) {
263267
id = _this.footnotes.length + 1;
264-
_this.footnotes[id] = _this3.parseInline(p1);
268+
_this.footnotes[id] = _this3.parseInline(p1, '', false);
265269
}
266270

267271
return _this.makeHolder('<sup id="fnref-' + id + '"><a href="#fn-' + id + '" class="footnote-ref">' + id + '</a></sup>');
@@ -290,14 +294,14 @@ var Parser = (function () {
290294
// link
291295
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/;
292296
text = text.replace(linkPattern1, function (match, p1, p2) {
293-
var escaped = _this.parseInline(_this.escapeBracket(p1));
297+
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
294298
var url = _this.escapeBracket(p2);
295299
return _this.makeHolder('<a href="' + url + '">' + escaped + '</a>');
296300
});
297301

298302
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/;
299303
text = text.replace(linkPattern2, function (match, p1, p2) {
300-
var escaped = _this.parseInline(_this.escapeBracket(p1));
304+
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
301305

302306
var result = _this.definitions[p2] ? '<a href="' + _this.definitions[p2] + '">' + escaped + '</a>' : escaped;
303307

@@ -325,7 +329,7 @@ var Parser = (function () {
325329
text = this.call('afterParseInlineBeforeRelease', text);
326330

327331
// release
328-
text = this.releaseHolder(text);
332+
text = this.releaseHolder(text, clearHolders);
329333

330334
text = this.call('afterParseInline', text);
331335

hyperdown.js

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,13 @@
240240

241241
/**
242242
* @param text
243+
* @param clearHolders
243244
* @return string
244245
*/
245246
}, {
246247
key: 'releaseHolder',
247248
value: function releaseHolder(text) {
249+
var clearHolders = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
248250

249251
var deep = 0;
250252
while (text.indexOf("|\r") !== -1 && deep < 10) {
@@ -254,9 +256,9 @@
254256
}
255257
deep++;
256258
}
257-
258-
this.holders.clear();
259-
259+
if (clearHolders) {
260+
this.holders.clear();
261+
}
260262
return text;
261263
}
262264

@@ -265,6 +267,7 @@
265267
*
266268
* @param string text
267269
* @param string whiteList
270+
* @param bool clearHolders
268271
* @return string
269272
*/
270273
}, {
@@ -273,6 +276,7 @@
273276
var _this3 = this;
274277

275278
var whiteList = arguments.length <= 1 || arguments[1] === undefined ? '' : arguments[1];
279+
var clearHolders = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2];
276280

277281
text = this.call('beforeParseInline', text);
278282
var _this = this;
@@ -307,7 +311,7 @@
307311

308312
if (id === -1) {
309313
id = _this.footnotes.length + 1;
310-
_this.footnotes[id] = _this3.parseInline(p1);
314+
_this.footnotes[id] = _this3.parseInline(p1, '', false);
311315
}
312316

313317
return _this.makeHolder('<sup id="fnref-' + id + '"><a href="#fn-' + id + '" class="footnote-ref">' + id + '</a></sup>');
@@ -336,14 +340,14 @@
336340
// link
337341
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/;
338342
text = text.replace(linkPattern1, function (match, p1, p2) {
339-
var escaped = _this.parseInline(_this.escapeBracket(p1));
343+
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
340344
var url = _this.escapeBracket(p2);
341345
return _this.makeHolder('<a href="' + url + '">' + escaped + '</a>');
342346
});
343347

344348
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/;
345349
text = text.replace(linkPattern2, function (match, p1, p2) {
346-
var escaped = _this.parseInline(_this.escapeBracket(p1));
350+
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
347351

348352
var result = _this.definitions[p2] ? '<a href="' + _this.definitions[p2] + '">' + escaped + '</a>' : escaped;
349353

@@ -371,7 +375,7 @@
371375
text = this.call('afterParseInlineBeforeRelease', text);
372376

373377
// release
374-
text = this.releaseHolder(text);
378+
text = this.releaseHolder(text, clearHolders);
375379

376380
text = this.call('afterParseInline', text);
377381

src/Parser.js

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,10 @@ export default class Parser {
149149

150150
/**
151151
* @param text
152+
* @param clearHolders
152153
* @return string
153154
*/
154-
releaseHolder(text) {
155-
155+
releaseHolder(text, clearHolders = true) {
156156
let deep = 0;
157157
while (text.indexOf("|\r") !== -1 && deep < 10) {
158158
for (let key in this.holders) {
@@ -161,9 +161,9 @@ export default class Parser {
161161
}
162162
deep ++;
163163
}
164-
165-
this.holders.clear()
166-
164+
if (clearHolders) {
165+
this.holders.clear()
166+
}
167167
return text
168168
}
169169

@@ -172,9 +172,10 @@ export default class Parser {
172172
*
173173
* @param string text
174174
* @param string whiteList
175+
* @param bool clearHolders
175176
* @return string
176177
*/
177-
parseInline (text, whiteList = '') {
178+
parseInline (text, whiteList = '', clearHolders = true) {
178179
text = this.call('beforeParseInline', text)
179180
let _this = this
180181
// code
@@ -208,7 +209,7 @@ export default class Parser {
208209

209210
if (id === -1) {
210211
id = _this.footnotes.length + 1
211-
_this.footnotes[id] = this.parseInline(p1)
212+
_this.footnotes[id] = this.parseInline(p1, '', false)
212213
}
213214

214215
return _this.makeHolder(`<sup id="fnref-${id}"><a href="#fn-${id}" class="footnote-ref">${id}</a></sup>`)
@@ -237,14 +238,14 @@ export default class Parser {
237238
// link
238239
let linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/
239240
text = text.replace(linkPattern1, (match, p1, p2) => {
240-
let escaped = _this.parseInline(_this.escapeBracket(p1))
241+
let escaped = _this.parseInline(_this.escapeBracket(p1), '', false)
241242
let url = _this.escapeBracket(p2)
242243
return _this.makeHolder(`<a href="${url}">${escaped}</a>`)
243244
})
244245

245246
let linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/
246247
text = text.replace(linkPattern2, (match, p1, p2) => {
247-
let escaped = _this.parseInline(_this.escapeBracket(p1))
248+
let escaped = _this.parseInline(_this.escapeBracket(p1), '', false)
248249

249250
let result = _this.definitions[p2] ?
250251
`<a href="${_this.definitions[p2]}">${escaped}</a>`
@@ -275,7 +276,7 @@ export default class Parser {
275276
text = this.call('afterParseInlineBeforeRelease', text);
276277

277278
// release
278-
text = this.releaseHolder(text)
279+
text = this.releaseHolder(text, clearHolders)
279280

280281
text = this.call('afterParseInline', text)
281282

0 commit comments

Comments
 (0)