From: m.eik m. <mei...@un...> - 2015-01-06 14:57:58
|
Git commit 97710a1010f3fa28ed2b06b6a9f3ea3361327b67 by m.eik michalke. Committed on 06/01/2015 at 14:57. Pushed by meikm into branch 'master'. improved the author and maintainer fileds in generated DESCRIPTION files M +3 -1 packages/rkwarddev/ChangeLog M +42 -0 packages/rkwarddev/R/rk-internal.R M +6 -5 packages/rkwarddev/R/rk.plugin.skeleton.R http://commits.kde.org/rkward/97710a1010f3fa28ed2b06b6a9f3ea3361327b67 diff --git a/packages/rkwarddev/ChangeLog b/packages/rkwarddev/ChangeLog index a761708..0822bf7 100644 --- a/packages/rkwarddev/ChangeLog +++ b/packages/rkwarddev/ChangeLog @@ -1,6 +1,6 @@ ChangeLog for package rkwarddev -changes in version 0.06-6 (2015-01-02) +changes in version 0.06-6 (2015-01-06) fixed: - rk.XML.optionset() does now allow to re-use objects defined in the same function call (i.e., refer to optioncolumns in the logic section) @@ -62,6 +62,8 @@ changed: - rk.JS.doc() now uses a more robust method to set global variables, namely by defining an additional function setGlobalVars() and calling that inside preprocess() + - updated the generation of author and maintainer fileds in DESCRIPTIONs + made by rk.plugin.skeleton(), borrowing get.authors() from roxyPackage removed: - the functions rk.set.language() rk.get.language() were no longer useful and therefore removed diff --git a/packages/rkwarddev/R/rk-internal.R b/packages/rkwarddev/R/rk-internal.R index 637e73f..e8499bd 100644 --- a/packages/rkwarddev/R/rk-internal.R +++ b/packages/rkwarddev/R/rk-internal.R @@ -547,6 +547,48 @@ get.by.role <- function(persons, role="aut"){ } ## end function get.by.role() +## function get.authors() +get.authors <- function(description, maintainer=TRUE, contributor=FALSE, copyright=FALSE){ + if("Authors@R" %in% names(description)){ + gotPersons <- TRUE + authorsFromDescription <- description[["Authors@R"]] + } else if("Author@R" %in% names(description)){ + gotPersons <- TRUE + authorsFromDescription <- description[["Author@R"]] + } else { + gotPersons <- FALSE + } + + if(isTRUE(gotPersons)){ + got.aut <- paste(format(get.by.role(eval(parse(text=authorsFromDescription))), include=c("given", "family")), collapse=", ") + got.cre <- ifelse(isTRUE(maintainer), + paste(format(get.by.role(eval(parse(text=authorsFromDescription)), role="cre"), include=c("given", "family", "email")), collapse=", "), + "") + got.ctb <- ifelse(isTRUE(contributor), + paste(format(get.by.role(eval(parse(text=authorsFromDescription)), role="ctb"), include=c("given", "family")), collapse=", "), + "") + got.cph <- ifelse(isTRUE(copyright), + paste(format(get.by.role(eval(parse(text=authorsFromDescription)), role="cph"), include=c("given", "family")), collapse=", "), + "") + } else { + got.aut <- description[["Author"]] + got.cre <- ifelse(isTRUE(maintainer), + description[["Maintainer"]], + "") + # contributors should already be named in got.aut + got.ctb <- "" + got.cph <- "" + } + got.cre.clean <- gsub("<([^@]*)@([^>]*)>", "\\\\email{\\1@@\\2}", gsub("\n[[:space:]]*", "\n#' ", got.cre)) + # append contributors + if(isTRUE(contributor) && got.ctb != ""){ + got.aut <- paste0(got.aut, ", with contributions from ", got.ctb) + } else {} + gotAuthors <- list(aut=got.aut, cre=got.cre, cre.clean=got.cre.clean, ctb=got.ctb, cph=got.cph) + return(gotAuthors) +} ## end function get.authors() + + ## function check.ID() # - node: a XiMpLe.node to search for an ID # - search.environment: if TRUE, the internal environment is searched for the ID diff --git a/packages/rkwarddev/R/rk.plugin.skeleton.R b/packages/rkwarddev/R/rk.plugin.skeleton.R index 5766e75..83eb764 100644 --- a/packages/rkwarddev/R/rk.plugin.skeleton.R +++ b/packages/rkwarddev/R/rk.plugin.skeleton.R @@ -364,11 +364,12 @@ rk.plugin.skeleton <- function(about, path=tempdir(), ## create DESCRIPTION file if("desc" %in% create){ if(isTRUE(checkCreateFiles(description.file, ow=overwrite, action="desc"))){ - authors <- XML2person(about.node, eval=TRUE) - all.authors <- format(get.by.role(authors, role="aut"), - include=c("given", "family", "email"), braces=list(email=c("<", ">"))) - all.maintainers <- format(get.by.role(authors, role="cre"), - include=c("given", "family", "email"), braces=list(email=c("<", ">"))) + # R replaces the @ with a dot, so we need to rename it as a workaround + authors.person <- data.frame(AuthorsR=paste0("c(", XML2person(about.node), ")"), stringsAsFactors=FALSE) + colnames(authors.person)[1] <- "Authors@R" + authors <- get.authors(authors.person, maintainer=TRUE, contributor=TRUE) + all.authors <- authors[["aut"]] + all.maintainers <- authors[["cre"]] ## TODO: check and add the commented values here: desc <- data.frame( |