diff --git a/lib/index.umd.js b/lib/index.umd.js index 1cd2362..ab36edc 100644 --- a/lib/index.umd.js +++ b/lib/index.umd.js @@ -147,6 +147,23 @@ return "$[" + token.tag + " " + this.parser.parseInline(token.tokens) + "]"; } + }, { + name: 'escapedMfm', + level: 'inline', + start: function start(src) { + return src.match(/\\\$\[/); + }, + tokenizer: function tokenizer(src, tokens) { + if (/^\\\$\[/.exec(src)) { + return { + type: 'escapedMfm', + raw: '\\$[' + }; + } + }, + renderer: function renderer(token) { + return '$['; + } }, { name: 'center', level: 'block', diff --git a/package.json b/package.json index 3e2c1f9..88018b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "marked-mfm", - "version": "0.4.0", + "version": "0.5.0", "description": "Marked.js extension for Misskey-flavored Markdown", "main": "./src/index.js", "browser": "./lib/index.umd.js", diff --git a/src/index.js b/src/index.js index 86299ec..4b310a2 100644 --- a/src/index.js +++ b/src/index.js @@ -50,6 +50,19 @@ export default { return `$[${token.tag} ${this.parser.parseInline(token.tokens)}]` }, }, + { + name: 'escapedMfm', + level: 'inline', + start (src) { return src.match(/\\\$\[/) }, + tokenizer (src, tokens) { + if (/^\\\$\[/.exec(src)) { + return { type: 'escapedMfm', raw: '\\$[' } + } + }, + renderer (token) { + return '$[' + }, + }, { name: 'center', level: 'block', diff --git a/test/index.test.js b/test/index.test.js index bcdb63a..fc6254d 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -42,6 +42,11 @@ describe('marked-mfm', () => { expect(marked('$[spin.alternate,speed=0.5s test]')).toBe('

test

\n') }) + test('escaped', () => { + marked.use(markedMfm) + expect(marked('\\$[spin test]')).toBe('

$[spin test]

\n') + }) + test('center', () => { marked.use(markedMfm) expect(marked('
test *italic*
')).toBe('
test italic
\n')