С Marked Я могу легко переопределить/добавить/изменить правила lexer во время реализации, и это отлично! Например, я могу заставить использовать пространство между хэш подписать текст, чтобы сделать заголовок так:Как написать собственное правило InlineLexer для отмеченных .js?
var lexer = new marked.Lexer(options);
console.log(lexer);
lexer.rules.heading = /^\s*(#{1,6})\s+([^\n]+?) *#* *(?:\n+|$)/
console.log(marked.parser(lexer.lex('#hashtag?'), options));
//<p>#hashtag?</p>
console.log(marked.parser(lexer.lex('# heading?'), options));
//<h1 id="undefinedheading-">heading?</h1>
Круто!
Но есть ли способ, легко сделать то же самое для inlineLexer
? Как мне нужно сделать так, чтобы пользователи могли добавлять изображения со следующей последовательностью: %[My Image](http://example.com/img.jpg)
? Так я модифицирована:
var inlineLexer = marked.InlineLexer;
inlineLexer.rules.link = /^[!%]{0,1}?\[((?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*)\]\(\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*\)/;
...
Что я должен делать дальше? Как связать пользовательский inlineLexer с отмеченным экземпляром? Пожалуйста, покажите мне пример того, как это сделать! Как я могу изменить/добавить пользовательские встроенные правила lexer?
Пожалуйста, ознакомьтесь с этим [вопросом] (https://github.com/chjj/marked/issues/504), где я разместил свое решение. – Rugal