ฉันใช้รหัสต่อไปนี้เป็นการส่วนตัวในแพ็คเกจ "dataManagement" ที่ฉันเรียกในสคริปต์ทั้งหมดของฉัน มีเอกสารและตัวอย่าง roxygen คุณเพียงแค่เรียก document () และให้ doxygen ทำงานบนรหัส C ใน src / เอกสารถูกใส่ไว้ใน inst / doxygen เพื่อให้แพคเกจของคุณพร้อมใช้งาน CRAN
เอกสาร R ที่ออกแบบมาสำหรับผู้ใช้ปลายทาง R ไม่ควรดูรหัส C ฉันไม่ได้รวมเอกสารรหัส C ไว้ในเอกสาร R คลาสสิก แต่อาจเป็นแนวทางปฏิบัติที่ดีในการคัดลอกเอกสาร C ที่เป็นผลลัพธ์เป็น "ขอบมืด" .
library("testthat")
library("devtools")
ReplaceTag <- function(fileStrings,tag,newVal){
iLine <- grep(paste0("^",tag,"\\>"),fileStrings)
nLines <- length(iLine)
if(nLines == 0){
line <- paste0(tag,"\t= ",newVal)
iLine <- length(fileStrings)+1
}else if (nLines > 0){
line <- gsub("=.*",paste0("= ",newVal),fileStrings[iLine])
if(nLines >1){
warning(paste0("File has",nLines,"for key",tag,"check it up manually"))
}
}
fileStrings[iLine] <- line
return(fileStrings)
}
DoxInit <- function(rootFolder="."){
doxyFileName <- "Doxyfile"
initFolder <- getwd()
if(rootFolder != "."){
setwd(rootFolder)
}
rootFileYes <- length(grep("DESCRIPTION",dir()))>0
doxDir <- "inst/doxygen"
if(!file.exists(doxDir)){
dir.create(doxDir,recursive=TRUE)
}
setwd(doxDir)
system(paste0("doxygen -g ",doxyFileName))
doxyfile <- readLines("Doxyfile")
doxyfile <- ReplaceTag(doxyfile,"EXTRACT_ALL","YES")
doxyfile <- ReplaceTag(doxyfile,"INPUT","src/")
doxyfile <- ReplaceTag(doxyfile,"OUTPUT_DIRECTORY","inst/doxygen/")
cat(doxyfile,file=doxyFileName,sep="\n")
setwd(initFolder)
return(NULL)
}
document <- function(doxygen=file.exists("src")){
if(doxygen){
doxyFileName<-"inst/doxygen/Doxyfile"
if(!file.exists(doxyFileName)){
DoxInit()
}
system(paste("doxygen",doxyFileName))
}
devtools::document()
}