Предварительные или послепроцессорные фрагменты

Есть ли какой-то механизм, с помощью которого я могу преобразовать комментарии, которые видит 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 проанализирует его, например, заменив все экземпляры вещей в backticks с помощью \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 делает свое создание документа?

Я не хочу делать постоянную find-replace в моих файлах .r. Как вы можете догадаться из моего примера, я нацелен на некоторую рудиментарную поддержку разметки в своих комментариях roxygen и, следовательно, хочу сохранить файлы .r как-чтобы сохранить читаемость (и программно вставить \code{..}).

Должен ли я просто написать свою собственную версию roxygenise, которая запускает preprocess для всех обнаруженных комментариев в стиле roxygen в моих файлах, временно сохраняет их где-то, а затем запускает фактический roxygenise на них?

Ответ 1

Повторив это через пару лет, похоже, что у Roxygen есть функция register.preref.parsers, которую можно использовать для встраивания собственных парсеров в roxygen. Одним из таких применений является многообещающий maxygen package (markdown + roxygen = maxygen), который очень аккуратная реализация обработки уценки комментариев roxygen (хотя только для спецификации CommonMark), и вы можете увидеть, как он используется в этом пакете функция macument. Я с нетерпением жду "pandoc + roxygen = pandoxygen"...:)