Sauerstoff-Schnipsel vor oder nach dem Prozess

68

Gibt es einen Mechanismus, mit dem ich die Kommentare, die roxygen sieht, transformieren kann, vorzugsweise bevor es die roxygen-> rd-Konvertierung durchführt?

Angenommen, ich habe:

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

Angenommen, ich möchte den Kommentar konvertieren, bevor roxygen ihn analysiert, z. B. alle Instanzen von Dingen in Backticks durch ersetzen \code{}. Dh:

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.

Kann ich preprocessRoxygen irgendwie einspeisen, damit es auf den Dokumenten ausgeführt wird, bevor (oder nachdem dies in diesem Fall funktionieren würde) Roxygen seine Dokumente generiert?

Ich möchte meine .rDateien nicht dauerhaft suchen und ersetzen . Wie Sie aus meinem Beispiel erraten können, strebe ich in meinen Sauerstoffkommentaren eine rudimentäre Unterstützung für das Abschriften an und möchte daher meine .rDateien unverändert lassen, um die Lesbarkeit zu gewährleisten (und das \code{..}Material programmgesteuert einzufügen ).

Sollte ich einfach meine eigene Version davon schreiben roxygenise, die preprocessauf allen erkannten Kommentaren im Roxygen-Stil in meinen Dateien ausgeführt wird, sie vorübergehend irgendwo speichert und dann die eigentliche roxygenise auf diesen ausführt ?

mathematisch.Kaffee
quelle
1
Ich habe das noch nie versucht, aber AFAIK Sie können Ihre eigenen Roclets schreiben und diese in Ihrem Sauerstoffanruf angeben, dh Sie geben Ihre neue rocletim Argument anroxygenize(..., roclet=mc_roclet)
Andrie
3
Ich würde empfehlen, auf github.com/hadley/roxygen3 aufzubauen und sich die Interna des Markdown-Pakets anzusehen, um dies richtig zu tun. Ich würde gerne einen Patch annehmen.
Hadley
@ Hadley Prost, ich habe bereits eine Kopie von roxygen3 ausgecheckt und wollte nur sehen, ob jemand eine zusammengehackte Lösung hat, bevor ich anfing zu graben. Wenn ich Code , um etwas zu verwalten , das funktioniert Ich werde einen Patch einreichen
mathematical.coffee

Antworten:

0

Wenn man dies ein paar Jahre später noch einmal betrachtet, sieht es so aus, als ob Roxygen eine Funktion hat register.preref.parsers, mit der man seine eigenen Parser in Roxygen injizieren kann. Eine solche Verwendung ist das vielversprechende Maxygen-Paket (Markdown + Roxygen = Maxygen), eine sehr übersichtliche Implementierung der Markdown-Verarbeitung von Roxygen-Kommentaren (allerdings nur gemäß der CommonMark-Spezifikation), und Sie können sehen, wie es im Macument dieses Pakets verwendet wird Funktion . Ich warte gespannt auf "pandoc + roxygen = pandoxygen" ... :)

mathematisch.Kaffee
quelle