2013-03-21 27 views
68

Có một số cơ chế mà theo đó tôi có thể chuyển đổi các nhận xét mà roxygen thấy, tốt nhất là trước khi chuyển đổi roxygen->?Đoạn roxygen trước hoặc sau quá trình

Ví dụ, giả sử tôi có:

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

Bây giờ, giả sử tôi muốn làm một số chuyển đổi của bình luận trước roxygen phân tích nó, ví dụ thay thế tất cả các trường của sự vật trong backticks với \code{}. Ví dụ:

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. 

Tôi có thể ăn preprocess vào roxygen bằng cách nào đó để nó sẽ chạy nó trên doclets trước (hoặc sau sẽ làm việc trong trường hợp này) roxygen không thế hệ tài liệu của mình?

Tôi không muốn thực hiện tìm kiếm thay thế vĩnh viễn trong các tệp .r của mình. Như bạn có thể đoán từ ví dụ của tôi, tôi đang hướng tới một số hỗ trợ thô sơ trong các nhận xét roxygen của mình, và do đó muốn giữ các tệp .r của mình như là để bảo toàn khả năng đọc (và chèn các công cụ \code{..} theo chương trình).

Nên tôi chỉ viết phiên bản riêng của tôi về roxygenise chạy preprocess trên tất cả các ý kiến ​​phát hiện roxygen kiểu trong tác phẩm của tôi, tiết kiệm cho họ tạm ở đâu đó, và sau đó chạy thực tếroxygenise trên những?

+1

Tôi chưa từng thử điều này trước đây, nhưng AFAIK bạn có thể viết các roclet của riêng bạn và chỉ định các cuộc gọi roxygen của bạn, tức là bạn chỉ định «roclet' mới trong đối số 'roxygenize (..., roclet = mc_roclet)' – Andrie

+3

Tôi khuyên bạn nên xây dựng trên đầu trang của https://github.com/hadley/roxygen3, và nhìn vào bên trong của gói markdown để làm điều này đúng cách. Tôi rất sẵn lòng chấp nhận một bản vá. – hadley

+0

@hadley cổ vũ, tôi đã kiểm tra một bản sao roxygen3, chỉ muốn xem liệu có ai có giải pháp bị tấn công cùng nhau trước khi tôi bắt đầu đào bới. Nếu tôi quản lý để mã lên một cái gì đó hoạt động tôi sẽ gửi một bản vá –

Trả lời

0

Xem lại điều này một vài năm sau, có vẻ như Roxygen có chức năng register.preref.parsers mà người ta có thể sử dụng để tiêm các trình phân tích cú pháp của riêng họ vào roxygen. Một trong những cách sử dụng này là maxygen package đầy hứa hẹn (markdown + roxygen = maxygen), thực hiện rất gọn gàng việc xử lý markdown của các nhận xét roxygen (mặc dù chỉ với thông số CommonMark), và bạn có thể xem cách nó được sử dụng trong gói đó macument function . Tôi háo hức chờ đợi "pandoc + roxygen = pandoxygen" ... :)

Các vấn đề liên quan