nan.xiao 如果在未来的某一天能把 R Markdown 的 parser 部分解耦出来就好了
这部分确实也是我想解耦出来的。上个月我在复活 markdown 包,也想在里面写个轻量版的 knitr,如果 knitr 的解析器可以单独抽出来就好了。
这是我几年前随意写的一个 Rmd 解析函数:
parse_rmd = function(file) {
x = xfun::read_utf8(file)
on.exit(knitr::knit_code$restore(), add = TRUE)
res = knitr:::split_file(x, patterns = knitr::all_patterns$md)
lapply(res, function(el) {
if (!is.null(label <- el$params$label)) el$src = knitr::knit_code$get(label)
el
})
}
当然,这个不符合你的要求。明年我再看看 knitr 里的一大坨解析代码是否有可能抽象出来。