2013-03-21 119 views
68

是否有某种机制可以用来转换roxygen所看到的评论,最好是在它进行roxygen-> rd转换之前?处理前或处理后的roxygen片段

例如,假设我有:

#' My function. Does stuff with numbers. 
#' 
#' This takes an input `x` and does something with it. 
#' @param x a number. 
myFunction <- function (x) { 
} 

现在,假设我想要做的评论的一些转换roxygen解析之前,例如以\code{}替代的东西所有实例反引号。即:

preprocess <- function (txt) { 
    gsub('`([^ ]+)`', '\\\\code{\\1}', txt) 
} 
# cat(preprocess('Takes an input `x` and does something with it'.)) 
# Takes an input \code{x} and does something with it. 

我能养活preprocess到roxygen不知何故,这样它会(或之后会在这种情况下工作)roxygen做它的文档生成之前在的doclet运行呢?

我不想在我的.r文件中做永久的查找替换。正如你从我的例子中可以猜到的,我的目标是在我的roxygen注释中支持一些基本的降价支持,因此希望保留我的.r文件以保持可读性(并以编程方式插入\code{..}的东西)。

如果我只是写我自己的roxygenise版本,运行在所有的检测roxygen风格的注释preprocess在我的文件,将它们暂时保存某处,然后运行在那些实际roxygenise

+1

我还没有尝试过这个,但AFAIK你可以写你自己的roclets并在你的roxygen调用中指定这些,即你指定新的'roclet'在参数'roxygenize(...,roclet = mc_roclet)' – Andrie 2013-03-21 09:46:29

+3

我建议在https://github.com/hadley/roxygen3之上构建,然后查看markdown包的内部以正确执行此操作。我会很乐意接受一个补丁。 – hadley 2013-03-21 13:17:09

+0

@hadley欢呼,我已经签出了一份roxygen3,只是想看看是否有人在我开始挖掘之前有一个黑客入侵的解决方案。如果我设法编写一些有用的东西,我会提交一个补丁 – 2013-03-22 03:36:15

回答

0

几年后重温这个,看起来好像Roxygen有一个函数register.preref.parsers,可以使用它来将自己的解析器注入到roxygen中。 这样做的一个用处是有希望的maxygen package(markdown + roxygen = maxygen),这是一个非常整齐的roxygen注释降级处理实现(尽管只适用于CommonMark规范),您可以看到它如何用于该包的macument function 。我急切地等待“pandoc + roxygen = pandoxygen”... :)