diff --git a/dist/tags/base.js b/dist/tags/base.js index c06eba4..1238cb0 100644 --- a/dist/tags/base.js +++ b/dist/tags/base.js @@ -144,7 +144,7 @@ class TagCollection { } } getByName(name) { - return this.tags.filter(t => t.constructor.name == name)[0] || undefined; + return this.tags.filter(t => { return t.constructor.name == name; })[0] || undefined; } getByElementName(element) { const el = element.toUpperCase(); diff --git a/dist/tokenizer.js b/dist/tokenizer.js index b8c1f5b..69a46ba 100644 --- a/dist/tokenizer.js +++ b/dist/tokenizer.js @@ -63,7 +63,7 @@ class Tokenizer { const flushText = () => { if (textBuffer.length > 0) { tokens.push({ - role: 'block', + role: 'text', value: textBuffer, }); textBuffer = ''; @@ -189,6 +189,9 @@ class Tokenizer { && (charAfter === undefined || PUNCTUATION.has(charAfter) || charAfter === '\n'); const role = leftFlanking ? 'open' : rightFlanking ? 'close' : 'block'; var token = tag.tokenize(role, sequence, source); + if (role == 'block' && !tag.isBlock) { + continue; + } if (token) { return token; } diff --git a/dist/types.d.ts b/dist/types.d.ts index 28759f7..ea64da5 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -1,4 +1,4 @@ -export type TokenRole = 'open' | 'close' | 'block'; +export type TokenRole = 'open' | 'close' | 'block' | 'text'; export interface Token { role: TokenRole; value: string; diff --git a/src/ts/tokenizer.ts b/src/ts/tokenizer.ts index 62546ab..ffda494 100644 --- a/src/ts/tokenizer.ts +++ b/src/ts/tokenizer.ts @@ -78,7 +78,7 @@ export class Tokenizer { const flushText = () => { if (textBuffer.length > 0) { tokens.push({ - role: 'block', + role: 'text', value: textBuffer, }); textBuffer = ''; @@ -225,6 +225,10 @@ export class Tokenizer { const role: TokenRole = leftFlanking ? 'open' : rightFlanking ? 'close' : 'block'; var token: Token | null = tag.tokenize(role, sequence, source); + + if (role == 'block' && !tag.isBlock) { + continue; + } if (token) { return token; diff --git a/src/ts/types.ts b/src/ts/types.ts index 34ee972..926616e 100644 --- a/src/ts/types.ts +++ b/src/ts/types.ts @@ -1,4 +1,4 @@ -export type TokenRole = 'open' | 'close' | 'block'; +export type TokenRole = 'open' | 'close' | 'block' | 'text'; export interface Token { role: TokenRole; diff --git a/test/hopdown.test.ts b/test/hopdown.test.ts index bb054fa..dd4f463 100644 --- a/test/hopdown.test.ts +++ b/test/hopdown.test.ts @@ -153,6 +153,7 @@ suite('Markdown to HTML Round-Trips', () => { assert('Escape sequence \\`', '\\`not code\\`', '

\\`not code\\`

'); assert('trailing space', '*i* ', '

i

'); + assert('no closing delim', '*', '

*

'); }); });