2013-03-21 125 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」... :)