Với Marked Tôi có thể dễ dàng ghi đè/thêm/thay đổi quy tắc lexer trong quá trình triển khai và tuyệt vời! Ví dụ tôi có thể buộc phải sử dụng khoảng trống giữa băm ký một văn bản để thực hiện một tiêu đề như thế này:cách viết quy tắc InlineLexer tùy chỉnh cho marked.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>
Cool!
Nhưng có cách nào, để dễ dàng thực hiện tương tự cho inlineLexer
? Giống như tôi cần làm cho mọi người có thể thêm hình ảnh với chuỗi tiếp theo: %[My Image](http://example.com/img.jpg)
? Vì vậy, tôi đã sửa đổi:
var inlineLexer = marked.InlineLexer;
inlineLexer.rules.link = /^[!%]{0,1}?\[((?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*)\]\(\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*\)/;
...
Tôi nên làm gì tiếp theo? Cách liên kết một inlineLexer tùy chỉnh với một cá thể được đánh dấu? Vui lòng cho tôi xem ví dụ về cách thực hiện việc này! Làm cách nào để sửa đổi/thêm quy tắc lexer nội tuyến tùy chỉnh?
Vui lòng xem [issue] này (https://github.com/chjj/marked/issues/504) nơi tôi đăng giải pháp của mình. – Rugal