2013-03-21 20 views
68

roxygenが参照するコメントを、好ましくはroxygen-> rd変換を行う前に変換できるメカニズムはありますか?例えば前処理または後処理のローニックススニペット

、私が持っているとします

#' 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. 

は私が何とかroxygenにpreprocessを養うことができますroxygenは、そのドキュメント生成していますか?

私の.rファイルで永久にfind-replaceを実行したくありません。あなたが私の例から推測してもいいように、私は自分のroxygenコメントの初歩的なマークダウンサポートを目指しているので、私の.rファイルを現状のままにしておきたいと考えています(そして、\code{..}をプログラムで挿入してください)。

は、私はちょうど、私のファイルで検出されたすべてのroxygenスタイルのコメントにpreprocessを走るどこかに一時的に保存し、その後、それらの上実際roxygeniseを実行roxygeniseの私自身のバージョンを書くべきですか?

+1

私は以前これを試したことはありませんが、あなた自身のrocletsを書いてroxygen呼び出しで指定することができます。引数 'roxygenize(...、roclet = mc_roclet)' – Andrie

+3

私はhttps://github.com/hadley/roxygen3の上に構築し、これを正しく行うためにマークダウンパッケージの内部を見ることをお勧めします。私はパッチを受け入れてうれしいです。 – hadley

+0

@hadleyがうれしく思います。私はすでにroxygen3のコピーをチェックしていますが、掘り起こす前に誰かがハッキングされたソリューションを持っているかどうかを見たいと思っていました。私が動作するものをコード化することができれば、私はパッチを提出するでしょう –

答えて

0

これを数年後に見直してみると、Roxygenにはroxygenに独自のパーサを注入するための機能register.preref.parsersがあるようです。 このような用途の1つは有望なmaxygen package(markdown + roxygen = maxygen)です。これはroxygenコメントのマークダウン処理(CommonMark仕様に限られます)の非常にうまく実装であり、そのパッケージのmacument function 。私は熱心に "pandoc + roxygen = pandoxygen"を待っています... :)