繁体   English   中英

在 Markdown-it 中渲染标记?

[英]Render tokens in Markdown-it?

我想有条件地忽略一些标记,所以我写道:

var md = require("markdown-it")();
var mk = require("@iktakahiro/markdown-it-katex");
var mkit = require("markdown-it");
md.use(mk);

import Renderer from "markdown-it/lib/renderer";
let renderer = new Renderer()

markdown = `
# Title
## Ignored section
I am ignored...
## Other section
...
`
tokens = md.parse(markdown)
tokens = process_tokens(tokens)

console.log(renderer.render(token)) // <----- 

我收到错误:

Error TypeError: Cannot read property 'breaks' of undefined

renderer.js:108

default_rules.softbreak = function (tokens, idx, options /*, env */) {
  return options.breaks ? (options.xhtmlOut ? '<br />\n' : '<br>\n') : '\n'; // <----
};

是否可以分两步渲染 markdown?

markdown -1-> tokens -2-> html

在此示例中,我将拥有以下标记:

0: Token {type: "heading_open", tag: "h1", attrs: null, map: Array(2), nesting: 1, …}
1: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
2: Token {type: "heading_close", tag: "h1", attrs: null, map: null, nesting: -1, …}
3: Token {type: "heading_open", tag: "h2", attrs: null, map: Array(2), nesting: 1, …}
4: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
5: Token {type: "heading_close", tag: "h2", attrs: null, map: null, nesting: -1, …}
6: Token {type: "paragraph_open", tag: "p", attrs: null, map: Array(2), nesting: 1, …}
7: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
8: Token {type: "paragraph_close", tag: "p", attrs: null, map: null, nesting: -1, …}
9: Token {type: "heading_open", tag: "h2", attrs: null, map: Array(2), nesting: 1, …}
10: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
11: Token {type: "heading_close", tag: "h2", attrs: null, map: null, nesting: -1, …}
12: Token {type: "paragraph_open", tag: "p", attrs: null, map: Array(2), nesting: 1, …}
13: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
14: Token {type: "paragraph_close", tag: "p", attrs: null, map: null, nesting: -1, …} 

在检测到我想删除的h2之后,我得到了这个:

0: Token {type: "heading_open", tag: "h1", attrs: null, map: Array(2), nesting: 1, …}
1: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
2: Token {type: "heading_close", tag: "h1", attrs: null, map: null, nesting: -1, …}
3: Token {type: "heading_open", tag: "h2", attrs: null, map: Array(2), nesting: 1, …}
4: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
5: Token {type: "heading_close", tag: "h2", attrs: null, map: null, nesting: -1, …}
6: Token {type: "paragraph_open", tag: "p", attrs: null, map: Array(2), nesting: 1, …}
7: Token {type: "inline", tag: "", attrs: null, map: Array(2), nesting: 0, …}
8: Token {type: "paragraph_close", tag: "p", attrs: null, map: null, nesting: -1, …} 

您不需要实例化另一个渲染器。 您的问题是render需要md中的选项:

tokens = md.parse(markdown)
md.renderer.render(tokens, md.options)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM