[rkward-cvs] SF.net SVN: rkward-code:[4529] trunk/rkward/packages/rkwarddev

m-eik at users.sf.net m-eik at users.sf.net
Thu Feb 7 21:10:55 UTC 2013


Revision: 4529
          http://sourceforge.net/p/rkward/code/4529
Author:   m-eik
Date:     2013-02-07 21:10:55 +0000 (Thu, 07 Feb 2013)
Log Message:
-----------
rkwarddev: added <dependency_check> and <require map="">, also cleaned the code from several slot() calls, using getter functions instead

Modified Paths:
--------------
    trunk/rkward/packages/rkwarddev/ChangeLog
    trunk/rkward/packages/rkwarddev/DESCRIPTION
    trunk/rkward/packages/rkwarddev/NAMESPACE
    trunk/rkward/packages/rkwarddev/R/rk-internal.R
    trunk/rkward/packages/rkwarddev/R/rk.XML.require.R
    trunk/rkward/packages/rkwarddev/debian/changelog
    trunk/rkward/packages/rkwarddev/debian/copyright
    trunk/rkward/packages/rkwarddev/debian/rules
    trunk/rkward/packages/rkwarddev/inst/CITATION
    trunk/rkward/packages/rkwarddev/inst/NEWS.Rd
    trunk/rkward/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
    trunk/rkward/packages/rkwarddev/man/rk.XML.require.Rd

Added Paths:
-----------
    trunk/rkward/packages/rkwarddev/R/rk.XML.dependency_check.R
    trunk/rkward/packages/rkwarddev/man/rk.XML.dependency_check.Rd

Modified: trunk/rkward/packages/rkwarddev/ChangeLog
===================================================================
--- trunk/rkward/packages/rkwarddev/ChangeLog	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/ChangeLog	2013-02-07 21:10:55 UTC (rev 4529)
@@ -7,8 +7,10 @@
   - for consistency, from now on <component> is never an empty node
 added:
   - new function rk.XML.dependencies()
+  - new function rk.XML.dependency_check()
   - added options "dependencies", "namespace" and "priority" to rk.XML.pluginmap()
   - added option "dependencies" to rk.XML.component()
+  - added "map" to rk.XML.require()
 
 changes in version 0.06-1 (2012-11-08)
 changed:

Modified: trunk/rkward/packages/rkwarddev/DESCRIPTION
===================================================================
--- trunk/rkward/packages/rkwarddev/DESCRIPTION	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/DESCRIPTION	2013-02-07 21:10:55 UTC (rev 4529)
@@ -69,6 +69,7 @@
     'rk.XML.convert.R'
     'rk.XML.copy.R'
     'rk.XML.dependencies.R'
+    'rk.XML.dependency_check.R'
     'rk.XML.dialog.R'
     'rk.XML.dropdown.R'
     'rk.XML.embed.R'

Modified: trunk/rkward/packages/rkwarddev/NAMESPACE
===================================================================
--- trunk/rkward/packages/rkwarddev/NAMESPACE	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/NAMESPACE	2013-02-07 21:10:55 UTC (rev 4529)
@@ -1,40 +1,13 @@
-exportClasses(rk.JS.arr)
-exportClasses(rk.JS.ite)
-exportClasses(rk.JS.opt)
-exportClasses(rk.JS.var)
-exportClasses(rk.plot.opts)
-exportClasses(rk.plug.comp)
 export(echo)
 export(id)
 export(ite)
-exportMethods(show)
 export(qp)
-export(rk.build.plugin)
-export(rk.comment)
 export(rk.JS.array)
 export(rk.JS.doc)
 export(rk.JS.options)
 export(rk.JS.saveobj)
 export(rk.JS.scan)
 export(rk.JS.vars)
-export(rk.paste.JS)
-export(rk.paste.JS.graph)
-export(rk.plotOptions)
-export(rk.plugin.component)
-export(rk.plugin.skeleton)
-export(rk.rkh.caption)
-export(rk.rkh.doc)
-export(rk.rkh.link)
-export(rk.rkh.related)
-export(rk.rkh.scan)
-export(rk.rkh.section)
-export(rk.rkh.setting)
-export(rk.rkh.settings)
-export(rk.rkh.summary)
-export(rk.rkh.technical)
-export(rk.rkh.title)
-export(rk.rkh.usage)
-export(rk.testsuite.doc)
 export(rk.XML.about)
 export(rk.XML.attribute)
 export(rk.XML.browser)
@@ -49,6 +22,7 @@
 export(rk.XML.convert)
 export(rk.XML.copy)
 export(rk.XML.dependencies)
+export(rk.XML.dependency_check)
 export(rk.XML.dialog)
 export(rk.XML.dropdown)
 export(rk.XML.embed)
@@ -82,5 +56,32 @@
 export(rk.XML.varselector)
 export(rk.XML.varslot)
 export(rk.XML.wizard)
+export(rk.build.plugin)
+export(rk.comment)
+export(rk.paste.JS)
+export(rk.paste.JS.graph)
+export(rk.plotOptions)
+export(rk.plugin.component)
+export(rk.plugin.skeleton)
+export(rk.rkh.caption)
+export(rk.rkh.doc)
+export(rk.rkh.link)
+export(rk.rkh.related)
+export(rk.rkh.scan)
+export(rk.rkh.section)
+export(rk.rkh.setting)
+export(rk.rkh.settings)
+export(rk.rkh.summary)
+export(rk.rkh.technical)
+export(rk.rkh.title)
+export(rk.rkh.usage)
+export(rk.testsuite.doc)
 export(tf)
+exportClasses(rk.JS.arr)
+exportClasses(rk.JS.ite)
+exportClasses(rk.JS.opt)
+exportClasses(rk.JS.var)
+exportClasses(rk.plot.opts)
+exportClasses(rk.plug.comp)
+exportMethods(show)
 import(methods)

Modified: trunk/rkward/packages/rkwarddev/R/rk-internal.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk-internal.R	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/R/rk-internal.R	2013-02-07 21:10:55 UTC (rev 4529)
@@ -120,11 +120,11 @@
 	cleaned.tags <- list()
 	for(this.tag in child.list(single.tags)){
 		if(is.XiMpLe.node(this.tag)){
-			this.tag.name <- slot(this.tag, "name")
-			if(this.tag.name %in% relevant.tags & "id" %in% names(slot(this.tag, "attributes"))){
+			this.tag.name <- getXMLName(this.tag)
+			if(this.tag.name %in% relevant.tags & "id" %in% names(getXMLAttrs(this.tag))){
 				if(isTRUE(only.checkable) & this.tag.name %in% "frame"){
-					if("checkable" %in% names(slot(this.tag, "attributes"))){
-						if(identical(slot(this.tag, "attributes")[["checkable"]], "true")){
+					if("checkable" %in% names(getXMLAttrs(this.tag))){
+						if(identical(getXMLAttrs(this.tag)[["checkable"]], "true")){
 							cleaned.tags[length(cleaned.tags)+1] <- this.tag
 						} else {}
 					} else {}
@@ -153,8 +153,8 @@
 
 	ids <- t(sapply(cleaned.tags, function(this.tag){
 				if(is.XiMpLe.node(this.tag)){
-					this.tag.name <- slot(this.tag, "name")
-					this.tag.id <- slot(this.tag, "attributes")["id"]
+					this.tag.name <- getXMLName(this.tag)
+					this.tag.id <- getXMLAttrs(this.tag)["id"]
 				} else {
 					this.tag.name <- XiMpLe:::XML.tagName(this.tag)
 					this.tag.id <- XiMpLe:::parseXMLAttr(this.tag)[["id"]]
@@ -220,7 +220,7 @@
 		if(!is.null(modifiers)){
 			if(identical(modifiers, "all")){
 				if(is.XiMpLe.node(XML.var)){
-					tag.name <- slot(XML.var, "name")
+					tag.name <- getXMLName(XML.var)
 				} else {
 					tag.name <- XML.var
 				}
@@ -231,7 +231,7 @@
 				}
 			} else {
 				if(is.XiMpLe.node(XML.var)){
-					modif.tag.name <- slot(XML.var, "name")
+					modif.tag.name <- getXMLName(XML.var)
 				} else {
 					modif.tag.name <- "all"
 				}
@@ -312,7 +312,7 @@
 XML2person <- function(node, eval=FALSE){
 		if(is.XiMpLe.node(node)){
 			# check if this is *really* a about section, otherwise die of boredom
-			if(!identical(slot(node, "name"), "about")){
+			if(!identical(getXMLName(node), "about")){
 				stop(simpleError("I don't know what this is, but 'about' is not an about section!"))
 			} else {}
 		} else {
@@ -327,9 +327,9 @@
 		return(value)
 	}
 	all.authors <- c()
-	for (this.child in slot(node, "children")){
-		if(identical(slot(this.child, "name"), "author")){
-			attrs <- slot(this.child, "attributes")
+	for (this.child in getXMLChildren(node)){
+		if(identical(getXMLName(this.child), "author")){
+			attrs <- getXMLAttrs(this.child)
 			given <- make.vector(attrs[["given"]])
 			family <- make.vector(attrs[["family"]])
 			email <- make.vector(attrs[["email"]])
@@ -359,18 +359,18 @@
 	} else {}
 	if(is.XiMpLe.node(node)){
 		# check if this is *really* a about section, otherwise die of boredom
-		if(!identical(slot(node, "name"), "about")){
+		if(!identical(getXMLName(node), "about")){
 			stop(simpleError("I don't know what this is, but 'about' is not an about section!"))
 		} else {}
 	} else {
 		stop(simpleError("'about' must be a XiMpLe.node, see ?rk.XML.about()!"))
 	}
-	check.deps <- sapply(slot(node, "children"), function(this.child){identical(slot(this.child, "name"), "dependencies")})
+	check.deps <- sapply(getXMLChildren(node), function(this.child){identical(getXMLName(this.child), "dependencies")})
 	if(any(check.deps)){
-		got.deps <- slot(node, "children")[[which(check.deps)]]
+		got.deps <- getXMLChildren(node)[[which(check.deps)]]
 		deps.packages <- list()
 		# first see if RKWard and R versions are given
-		deps.RkR <- slot(got.deps, "attributes")
+		deps.RkR <- getXMLAttrs(got.deps)
 		deps.RkR.options  <- names(deps.RkR)
 		R.min <- ifelse("R_min_version" %in% deps.RkR.options, paste(">= ", deps.RkR[["R_min_version"]], sep=""), "")
 		R.max <- ifelse("R_max_version" %in% deps.RkR.options, paste("< ", deps.RkR[["R_max_version"]], sep=""), "")
@@ -384,10 +384,10 @@
 		if(Rk.version.indices > 0 & identical(mode, "depends")){
 			deps.packages[[length(deps.packages) + 1]] <- paste("rkward (", Rk.min, ifelse(Rk.version.indices > 1, ", ", ""), Rk.max, ")", sep="")
 		} else {}
-		check.deps.pckg <- sapply(slot(got.deps, "children"), function(this.child){identical(slot(this.child, "name"), "package")})
+		check.deps.pckg <- sapply(getXMLChildren(got.deps), function(this.child){identical(getXMLName(this.child), "package")})
 		if(any(check.deps.pckg & ((isTRUE(suggest) & identical(mode, "suggest")) | !isTRUE(suggest)))){
 			deps.packages[[length(deps.packages) + 1]] <- paste(sapply(which(check.deps.pckg), function(this.pckg){
-					this.pckg.dep <- slot(slot(got.deps, "children")[[this.pckg]], "attributes")
+					this.pckg.dep <- getXMLAttrs(getXMLChildren(got.deps)[[this.pckg]])
 					pckg.options <- names(this.pckg.dep)
 					pckg.name <- this.pckg.dep[["name"]]
 					pckg.min <- ifelse("min" %in% pckg.options, paste(">= ", this.pckg.dep[["min"]], sep=""), "")
@@ -425,7 +425,7 @@
 	} else {}
 
 	if(is.XiMpLe.node(node)){
-		node.ID <- slot(node, "attributes")[["id"]]
+		node.ID <- getXMLAttrs(node)[["id"]]
 	} else if(is.character(node)){
 		node.ID <- node
 	} else {
@@ -479,7 +479,7 @@
 	} else {}
 
 	if(is.XiMpLe.node(source)){
-		tag.name <- slot(source, "name")
+		tag.name <- getXMLName(source)
 		# embedded plugins can have all sorts of modifiers
 		if(tag.name %in% c("embed", "external")){
 			if(isTRUE(bool)){
@@ -575,7 +575,7 @@
 				this.child <- stripXML(this.child)
 
 				if(is.XiMpLe.node(this.child)){
-					return(slot(this.child, "name"))
+					return(getXMLName(this.child))
 				} else {
 					stop(simpleError(paste("Invalid object for ", section, " section, must be of class XiMpLe.node, but got class ", class(this.child), "!", sep="")))
 				}
@@ -605,7 +605,7 @@
 # - see: name of the function to check docs for
 valid.parent <- function(parent, node, warn=FALSE, see=NULL){
 	if(is.XiMpLe.node(node)){
-		node.name <- slot(node, "name")
+		node.name <- getXMLName(node)
 		if(identical(node.name, parent)){
 			return(TRUE)
 		} else {

Added: trunk/rkward/packages/rkwarddev/R/rk.XML.dependency_check.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk.XML.dependency_check.R	                        (rev 0)
+++ trunk/rkward/packages/rkwarddev/R/rk.XML.dependency_check.R	2013-02-07 21:10:55 UTC (rev 4529)
@@ -0,0 +1,148 @@
+#' Create XML node "dependency_check" for RKWard pluginmaps
+#'
+#' @param id.name Character string, a unique ID for this plugin element.
+#' @param dependencies A named list with these elements:
+#'		\describe{
+#'			\item{rkward.min}{Minimum RKWard version needed for this plugin (optional)}
+#'			\item{rkward.max}{Maximum RKWard version needed for this plugin (optional)}
+#'			\item{R.min}{Minimum R version needed for this plugin (optional)}
+#'			\item{R.max}{Maximum R version needed for this plugin (optional)}
+#'		}
+#' @param package A list of named character vectors, each with these elements:
+#'		\describe{
+#'			\item{name}{Name of a package this plugin depends on (optional)}
+#'			\item{min}{Minimum version of the package (optional)}
+#'			\item{max}{Maximum version of the package (optional)}
+#'			\item{repository}{Repository to download the package (optional)}
+#'		}
+#' @param pluginmap A named list with these elements:
+#'		\describe{
+#'			\item{name}{Identifier of a pluginmap this plugin depends on (optional)}
+#'			\item{url}{URL to get the pluginmap (optional)}
+#'		}
+#' @param hints Logical, if \code{TRUE}, \code{NULL} values will be replaced with example text.
+#' @export
+#' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
+#' @examples
+#' dependency_check.node <- rk.XML.dependency_check(
+#' 	dependencies=list(
+#' 		rkward.min="0.5.3",
+#' 		rkward.max="",
+#' 		R.min="2.10",
+#' 		R.max=""),
+#' 	package=list(
+#' 		c(name="heisenberg", min="0.11-2", max="",
+#' 			repository="http://rforge.r-project.org"),
+#' 		c(name="DreamsOfPi", min="0.2", max="", repository="")),
+#' 	pluginmap=list(
+#' 		c(name="heisenberg.pluginmap", url="http://eternalwondermaths.example.org/hsb"))
+#' )
+
+rk.XML.dependency_check <- function(id.name, dependencies=NULL, package=NULL, pluginmap=NULL, hints=FALSE){
+	## package
+	# - name
+	# - min="min_version",
+	# - max="max_version",
+	# - repository
+	# create example, if empty
+	if(is.null(package)){
+		if(isTRUE(hints)){
+			xml.package.example <- XMLNode("package",
+				attrs=list(
+					name="CHANGE_ME_OR_DELETE_ME",
+					"min_version"="CHANGE_ME_OR_DELETE_ME",
+					"max_version"="CHANGE_ME_OR_DELETE_ME",
+					repository="CHANGE_ME_OR_DELETE_ME"
+				))
+			xml.package <- list(XMLNode("!--", xml.package.example))
+		} else {
+			xml.package <- list()
+		}
+	} else {
+		xml.package <- sapply(package, function(this.package){
+				pck.options <- names(this.package)
+				pck.attributes <- list(name=this.package[["name"]])
+				for (this.option in c("min", "max","repository" )){
+					if(this.option %in% pck.options){
+						pck.attributes[[this.option]] <- this.package[[this.option]]
+					} else {}
+				}
+				result <- XMLNode("package", attrs=pck.attributes)
+				return(result)
+			})
+	}
+
+	## pluginmap
+	# - name,
+	# - url
+	# create example, if empty
+	if(is.null(pluginmap)){
+		if(isTRUE(hints)){
+			xml.pluginmap.text <- XMLNode("", "If this plugin depends on other pluginmaps, edit this part to your needs:")
+			xml.pluginmap.example <- XMLNode("pluginmap",
+				attrs=list(
+					name="CHANGE_ME_OR_DELETE_ME",
+					url="CHANGE_ME_OR_DELETE_ME"
+				))
+			xml.pluginmap <- list(XMLNode("!--", xml.pluginmap.text, xml.pluginmap.example))
+		} else {
+			xml.pluginmap <- list()
+		}
+	} else {
+		xml.pluginmap <- sapply(pluginmap, function(this.pluginmap){
+				result <- XMLNode("pluginmap",
+					attrs=list(
+						name=this.pluginmap[["name"]],
+						url=this.pluginmap[["url"]]
+					))
+				return(result)
+			})
+	}
+
+	## dependencies
+	# - rkward.min="rkward_min_version",
+	# - rkward.max="rkward_max_version",
+	# - R.min="R_min_version",
+	# - R.max="R_max_version"
+	# + package
+	# + pluginmap
+	for (pmap in xml.pluginmap){
+		xml.package[[length(xml.package)+1]] <- pmap
+	}
+	# comment out an example dependency listing if it has no entries
+	if(is.null(dependencies)){
+		if(isTRUE(hints)){
+			R.v <- R.Version()
+			xml.dependencies <- XMLNode("dependencies",
+				attrs=list(
+					"rkward_min_version"=.rk.app.version,
+					"rkward_max_version"="CHANGE_ME_OR_DELETE_ME",
+					"R_min_version"=paste(R.v$major, R.v$minor, sep="."),
+					"R_max_version"="CHANGE_ME_OR_DELETE_ME"
+				),
+				.children=child.list(xml.package, empty=FALSE))
+		} else {
+			xml.dependencies <- XMLNode("dependencies", .children=child.list(xml.package, empty=FALSE))
+		}
+	} else {
+		dep.options <- names(dependencies)
+		dep.attributes <- list(id=id.name)
+		if("rkward.min" %in% dep.options){
+			dep.attributes[["rkward_min_version"]] <- dependencies[["rkward.min"]]
+		} else {}
+		if("rkward.max" %in% dep.options){
+			dep.attributes[["rkward_max_version"]] <- dependencies[["rkward.max"]]
+		} else {}
+		if("R.min" %in% dep.options){
+			dep.attributes[["R_min_version"]] <- dependencies[["R.min"]]
+		} else {}
+		if("R.max" %in% dep.options){
+			dep.attributes[["R_max_version"]] <- dependencies[["R.max"]]
+		} else {}
+		xml.dependency_check <- XMLNode("dependency_check",
+			attrs=dep.attributes,
+			.children=child.list(xml.package, empty=FALSE))
+	}
+
+	return(xml.dependency_check)
+}

Modified: trunk/rkward/packages/rkwarddev/R/rk.XML.require.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk.XML.require.R	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/R/rk.XML.require.R	2013-02-07 21:10:55 UTC (rev 4529)
@@ -2,7 +2,13 @@
 #'
 #' This function will create a require node for .pluginmap files.
 #' 
-#' @param file Character string, file name of another .pluginmap file to be included.
+#' Note that only one of the values can be set at a time. \code{file} should be preferred whenever
+#' possible.
+#' 
+#' @param file Character string, file name of another .pluginmap file to be included. Should be
+#'		preferred over \code{map} if that file is in the same package.
+#' @param map Character string, should be \code{"namespace::id"} of another .pluginmap to be included.
+#'		Can be used to address plugin maps which are not part of the same plugin package.
 #' @return An object of class \code{XiMpLe.node}.
 #' @export
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
@@ -10,12 +16,28 @@
 #' test.require <- rk.XML.require("another.pluginmap")
 #' cat(pasteXML(test.require))
 
-rk.XML.require <- function(file){
-	if(length(file) > 1 | !is.character(file)){
-		stop(simpleError("'file' must be a character string!"))
+rk.XML.require <- function(file=NULL, map=NULL){
+	# one of file or map *must* be used
+	if(is.null(file) && is.null(map)){
+		stop(simpleError("'file' or 'map' must be specified!"))
 	} else {}
+	# but only *one* of file or map can be used
+	if(!is.null(file) && !is.null(map)){
+		stop(simpleError("'file' and 'map' cannot be used both at the same time!"))
+	} else {}
 
-	node <- XMLNode("require", attrs=list(file=file))
+	# now that we know one of both is set
+	if(!is.null(file)){
+		if(length(file) > 1 || !is.character(file)){
+			stop(simpleError("'file' must be a character string!"))
+		} else {}
+	} else {
+		if(length(map) > 1 || !is.character(map)){
+			stop(simpleError("'map' must be a character string!"))
+		} else {}
+	}
 
+	node <- XMLNode("require", attrs=list(file=file, map=map))
+
 	return(node)
 }

Modified: trunk/rkward/packages/rkwarddev/debian/changelog
===================================================================
--- trunk/rkward/packages/rkwarddev/debian/changelog	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/debian/changelog	2013-02-07 21:10:55 UTC (rev 4529)
@@ -1,3 +1,9 @@
+r-other-rkward-rkwarddev (0.06-2-1) unstable; urgency=low
+
+  * new upstream release
+
+ -- m.eik michalke <meik.michalke at hhu.de>  Thu, 07 Feb 2013 19:55:15 +0000
+
 r-other-rkward-rkwarddev (0.05-8-1) unstable; urgency=low
 
   * new upstream release

Modified: trunk/rkward/packages/rkwarddev/debian/copyright
===================================================================
--- trunk/rkward/packages/rkwarddev/debian/copyright	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/debian/copyright	2013-02-07 21:10:55 UTC (rev 4529)
@@ -6,7 +6,7 @@
 'r-other-rkward-rkwarddev' in harmony with the R packaging policy to indicate
 that the package is external to the CRAN or BioC repositories.
 
-rkwarddev Copyright (C) 2012 Meik Michalke, released under the
+rkwarddev Copyright (C) 2013 Meik Michalke, released under the
 GNU General Public License (GPL) version 3 or (at your option) any later version.
 
 This software is distributed in the hope that it will be useful, but

Modified: trunk/rkward/packages/rkwarddev/debian/rules
===================================================================
--- trunk/rkward/packages/rkwarddev/debian/rules	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/debian/rules	2013-02-07 21:10:55 UTC (rev 4529)
@@ -1,7 +1,7 @@
 #!/usr/bin/make -f
 #								-*- makefile -*-
 # debian/rules file for the Debian/GNU Linux r-other-rkward-rkwarddev package
-# Copyright 2012 by m.eik michalke <meik.michalke at hhu.de>
+# Copyright 2013 by m.eik michalke <meik.michalke at hhu.de>
 
 debRreposname := other-rkward
 

Modified: trunk/rkward/packages/rkwarddev/inst/CITATION
===================================================================
--- trunk/rkward/packages/rkwarddev/inst/CITATION	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/inst/CITATION	2013-02-07 21:10:55 UTC (rev 4529)
@@ -1,13 +1,13 @@
 bibentry("Manual",
 		title="rkwarddev: A collection of tools for RKWard plugin development",
 		author="Meik Michalke",
-		year="2012",
-		note="(Version 0.06-1)",
+		year="2013",
+		note="(Version 0.06-2)",
 		url="http://rkward.sourceforge.net",
 
 		textVersion =
-		paste("Michalke, M. (2012). ",
-				"rkwarddev: A collection of tools for RKWard plugin development (Version 0.06-1). ",
+		paste("Michalke, M. (2013). ",
+				"rkwarddev: A collection of tools for RKWard plugin development (Version 0.06-2). ",
 				"Available from http://rkward.sourceforge.net",
 				sep=""),
 

Modified: trunk/rkward/packages/rkwarddev/inst/NEWS.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/inst/NEWS.Rd	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/inst/NEWS.Rd	2013-02-07 21:10:55 UTC (rev 4529)
@@ -1,11 +1,45 @@
 \name{NEWS}
 \title{News for Package 'rkwarddev'}
 \encoding{UTF-8}
+\section{Changes in rkwarddev version 0.06-2 (2013-02-07)}{
+  \subsection{changed}{
+    \itemize{
+      \item the structure of <about> nodes will change in RKWard 0.6.1, <dependencies> will become
+        a direct child of <document> or <component>, which explains several changes in this release
+      \item for consistency, from now on <component> is never an empty node
+    }
+  }
+  \subsection{added}{
+    \itemize{
+      \item new function \code{rk.XML.dependencies()}
+      \item new function \code{rk.XML.dependency_check()}
+      \item added options \code{"dependencies"}, \code{"namespace"} and \code{"priority"} to \code{rk.XML.pluginmap()}
+      \item added option \code{"dependencies"} to \code{rk.XML.component()}
+      \item added \code{"map"} to \code{rk.XML.require()}
+    }
+  }
+}
+\section{Changes in rkwarddev version 0.06-1 (2012-11-08)}{
+  \subsection{changed}{
+    \itemize{
+      \item \code{rk.plugin.skeleton()}: \code{"tests"} will now ignore \code{"overwrite"} and not replace
+        existing testsuite files
+    }
+  }
+  \subsection{fixed}{
+    \itemize{
+      \item dots will now be removed from pluginmap IDs
+      \item modifiers of \code{"external"} XML nodes will not be checked, since it can be
+        all kinds of stuff
+    }
+  }
+}
 \section{Changes in rkwarddev version 0.05-8 (2012-09-30)}{
   \subsection{added}{
     \itemize{
-      \item new function \code{rk.plotOptions()} and class \code{"rk.plot.opts"} to simplify code generation for plots;
-        this also caused changes in the internal workflow, especially for \code{child.node()} and \code{rk.paste.JS()}
+      \item new function \code{rk.plotOptions()} and class \code{"rk.plot.opts"} to simplify code
+        generation for plots; this also caused changes in the internal workflow,
+        especially for \code{child.node()} and \code{rk.paste.JS()}
     }
   }
   \subsection{changed}{
@@ -25,22 +59,24 @@
 \section{Changes in rkwarddev version 0.05-6 (2012-05-10)}{
   \subsection{added}{
     \itemize{
-      \item \code{rk.XML.wizard()} and \code{rk.XML.dialog()} can now set the \code{"recommended"} attribute
+      \item \code{rk.XML.wizard()} and \code{rk.XML.dialog()} can now set the \code{"recommended"}
+        attribute
     }
   }
 }
 \section{Changes in rkwarddev version 0.05-5 (2012-04-19)}{
   \subsection{added}{
     \itemize{
-      \item \code{rk.plugin.skeleton()} can now also generate initial ChangeLog files (but won't overwrite existing ones)
+      \item \code{rk.plugin.skeleton()} can now also generate initial ChangeLog files (but
+        won't overwrite existing ones)
       \item added a LICENSE file to the sources
       \item sources were initially debianized by roxyPackage
     }
   }
   \subsection{changed}{
     \itemize{
-      \item if files are being skipped by \code{rk.plugin.skeleton()}, the corresponding warning will now include the 'create'
-        actions that these files belong to
+      \item if files are being skipped by \code{rk.plugin.skeleton()}, the corresponding
+        warning will now include the 'create' actions that these files belong to
     }
   }
   \subsection{fixed}{
@@ -59,11 +95,12 @@
 \section{Changes in rkwarddev version 0.05-3 (2012-03-18)}{
   \itemize{
     \item fixed: \code{rk.XML.text()} now preserves XML tags in the text value
-    \item internally, functions now call \code{XiMpLe::XMLNode()} and \code{XiMpLe::XMLTree()} constructors instead of \code{new()},
-      and \code{pasteXMLNode()} and \code{pasteXMLTree()} were globally renamed into \code{pasteXML()}
+    \item internally, functions now call \code{XiMpLe::XMLNode()} and \code{XiMpLe::XMLTree()}
+      constructors instead of \code{new()}, and \code{pasteXMLNode()} and \code{pasteXMLTree()} were
+      globally renamed into \code{pasteXML()}
     \item internally, replaced object at node with slot(object, \code{"node"})
-    \item internally, moved checks for valid child and parent nodes to an internal functions,
-      \code{valid.child()} and \code{valid.parent()}
+    \item internally, moved checks for valid child and parent nodes to an internal
+      functions, \code{valid.child()} and \code{valid.parent()}
   }
 }
 \section{Changes in rkwarddev version 0.05-2 (2012-03-10)}{
@@ -71,24 +108,32 @@
     \item added missing dependency to package methods
     \item fixed docs in \code{rk.XML.plugin()}, \code{rk.XML.saveobj()} and \code{rk.plugin.skeleton()}
     \item fixed bug in \code{rk.XML.snippets()}
-    \item re-formatted the ChangeLog so roxyPackage can translate it into a NEWS.Rd file
+    \item re-formatted the ChangeLog so roxyPackage can translate it into a NEWS.Rd
+      file
   }
 }
 \section{Changes in rkwarddev version 0.05-1 (2012-01-04)}{
   \itemize{
-    \item removed superfluous "level=1" arguments from automatic "\code{rk.header()}"s in \code{rk.JS.doc()}
+    \item removed superfluous "level=1" arguments from automatic "\code{rk.header()}"s in
+      \code{rk.JS.doc()}
     \item added wrapper function \code{rk.XML.checkbox()} for \code{rk.XML.cbox()}
-    \item changed \code{rk.JS.saveobj()} to use ".GlobalEnv$" instead of "\code{assign()}" in the resulting code
-    \item added option to toggle the addition of empty "else \{\}" statements in rk.JS.ite objects to \code{rk.paste.JS()}
+    \item changed \code{rk.JS.saveobj()} to use ".GlobalEnv$" instead of "\code{assign()}" in the
+      resulting code
+    \item added option to toggle the addition of empty "else \{\}" statements in
+      rk.JS.ite objects to \code{rk.paste.JS()}
   }
 }
 \section{Changes in rkwarddev version 0.05-0 (2011-12-14)}{
   \itemize{
-    \item \code{"result.header"} now doesn't add quotes by itself in \code{rk.JS.doc()}, so you can have R objects pasted.
-      previous scripts need to be adapted accordingly! the headers can also be deactivated by setting to FALSE or \code{""}
-    \item fixed show method for objects of class rk.JS.var with more than one variable object
-    \item added support for global variables to \code{rk.JS.doc()} and \code{rk.plugin.component()}, and therefore also \code{rk.plugin.skeleton()}
-    \item \code{"variables"} and \code{"globals"} in \code{rk.JS.doc()} can now also be given as objects of class rk.JS.var
+    \item \code{"result.header"} now doesn't add quotes by itself in \code{rk.JS.doc()}, so you
+      can have R objects pasted. previous scripts need to be adapted accordingly!
+      the headers can also be deactivated by setting to FALSE or \code{""}
+    \item fixed show method for objects of class rk.JS.var with more than one
+      variable object
+    \item added support for global variables to \code{rk.JS.doc()} and
+      \code{rk.plugin.component()}, and therefore also \code{rk.plugin.skeleton()}
+    \item \code{"variables"} and \code{"globals"} in \code{rk.JS.doc()} can now also be given as objects
+      of class rk.JS.var
     \item worked on the vignette
   }
 }
@@ -100,7 +145,8 @@
 }
 \section{Changes in rkwarddev version 0.04-12 (2011-12-11)}{
   \itemize{
-    \item added function \code{tf()} for even quicker JavaScript code generation from checkboxes
+    \item added function \code{tf()} for even quicker JavaScript code generation from
+      checkboxes
     \item fixed issue with \code{"about"} not being an XML node in \code{rk.plugin.skeleton()}
   }
 }
@@ -112,7 +158,8 @@
 }
 \section{Changes in rkwarddev version 0.04-10 (2011-12-05)}{
   \itemize{
-    \item when using \code{rk.comment()} for logic scripting, its contents will automatically be placed inside a <script> node now
+    \item when using \code{rk.comment()} for logic scripting, its contents will
+      automatically be placed inside a <script> node now
   }
 }
 \section{Changes in rkwarddev version 0.04-9 (2011-12-03)}{
@@ -122,67 +169,80 @@
 }
 \section{Changes in rkwarddev version 0.04-8 (2011-11-10)}{
   \itemize{
-    \item R 2.14 creates source archives which are incompatible with earlier versions. attempt to deal with this
-      by adding empty R directory and NAMESPACE file
+    \item R 2.14 creates source archives which are incompatible with earlier
+      versions. attempt to deal with this by adding empty R directory and NAMESPACE
+      file
   }
 }
 \section{Changes in rkwarddev version 0.04-7 (2011-11-08)}{
   \itemize{
-    \item added long description support to \code{rk.XML.about()}, used for the DESCRIPTION file
+    \item added long description support to \code{rk.XML.about()}, used for the
+      DESCRIPTION file
   }
 }
 \section{Changes in rkwarddev version 0.04-6 (2011-10-31)}{
   \itemize{
-    \item added <frame> to the tags which are scanned by \code{rk.JS.scan()}, they're considered only if checkable
-    \item added <frame> to the tags which are scanned by \code{rk.JS.scan()}, they're considered only if checkable
+    \item added <frame> to the tags which are scanned by \code{rk.JS.scan()}, they're
+      considered only if checkable
+    \item added <frame> to the tags which are scanned by \code{rk.JS.scan()}, they're
+      considered only if checkable
     \item improved output of rk.JS.var class objects by \code{rk.paste.JS()}
   }
 }
 \section{Changes in rkwarddev version 0.04-5 (2011-10-28)}{
   \itemize{
-    \item set dependency of rkward to >= 0.5.6 to work around a glitch in rkward's package versioning.
-      this can cause errors on real 0.5.6 installations because they lack functions introduced
-      in 0.5.7 (to add & load a plugin automatically), but shouldn't really break anything
+    \item set dependency of rkward to >= 0.5.6 to work around a glitch in rkward's
+      package versioning. this can cause errors on real 0.5.6 installations
+      because they lack functions introduced in 0.5.7 (to add & load a plugin
+      automatically), but shouldn't really break anything
     \item added support to turn off modifier checks to \code{rk.XML.set()}
-    \item added option \code{"load.silencer"} to \code{rk.JS.doc()}, to easily add a switch to turn off package load messages in output.
+    \item added option \code{"load.silencer"} to \code{rk.JS.doc()}, to easily add a switch to
+      turn off package load messages in output.
   }
 }
 \section{Changes in rkwarddev version 0.04-4 (2011-10-26)}{
   \itemize{
-    \item fixed bug in check for valid modifiers (used to warn when mixed lists with/without modifiers were given)
-    \item fixed bug in \code{rk.XML.convert()} (false output if provided with list without modifiers)
+    \item fixed bug in check for valid modifiers (used to warn when mixed lists
+      with/without modifiers were given)
+    \item fixed bug in \code{rk.XML.convert()} (false output if provided with list without
+      modifiers)
     \item added option \code{"check.modifiers"} to \code{rk.JS.vars()}
   }
 }
 \section{Changes in rkwarddev version 0.04-3 (2011-10-22)}{
   \itemize{
-    \item added support for definint \code{doPrintout()} JS functions to \code{rk.JS.doc()}, \code{rk.plugin.skeleton()} and
-      \code{rk.plugin.component()}
-    \item added function \code{rk.comment()} to add comments to the generated code. it's a <!-- comment --> node
-      by default, but will be turned into // comment by \code{rk.paste.JS()} and <![CDATA[ comment ]]> for
-      logic sections automatically
-    \item added option \code{"gen.info"} to all file producing functions, to add a comment note that the file
-      was generated and changes should be made to the script rather than the code directly
+    \item added support for definint \code{doPrintout()} JS functions to \code{rk.JS.doc()},
+      \code{rk.plugin.skeleton()} and \code{rk.plugin.component()}
+    \item added function \code{rk.comment()} to add comments to the generated code. it's a
+      <!-- comment --> node by default, but will be turned into // comment by
+      \code{rk.paste.JS()} and <![CDATA[ comment ]]> for logic sections automatically
+    \item added option \code{"gen.info"} to all file producing functions, to add a comment
+      note that the file was generated and changes should be made to the script
+      rather than the code directly
     \item fixed missing \code{"id.name"} option in \code{rk.XML.embed()}
-    \item fixed automatic menu hierarchy generation for lists of legth 1 in \code{rk.XML.pluginmap()}
+    \item fixed automatic menu hierarchy generation for lists of legth 1 in
+      \code{rk.XML.pluginmap()}
   }
 }
 \section{Changes in rkwarddev version 0.04-2 (2011-10-21)}{
   \itemize{
-    \item removed the superfluous \code{"name"} option from \code{rk.plugin.skeleton()} and \code{rk.plugin.component()}; names are now
-      always provided by \code{"about"}, either as an <about> node or just the name.
+    \item removed the superfluous \code{"name"} option from \code{rk.plugin.skeleton()} and
+      \code{rk.plugin.component()}; names are now always provided by \code{"about"}, either as an
+      <about> node or just the name.
     \item result headers now start at level 1 by default in \code{rk.JS.doc()}
-    \item added option \code{"suggest.required"} to \code{rk.plugin.skeleton()} to add package requirements as suggestions,
-      not dependencies
+    \item added option \code{"suggest.required"} to \code{rk.plugin.skeleton()} to add package
+      requirements as suggestions, not dependencies
     \item updated skeleton GUI dialog
   }
 }
 \section{Changes in rkwarddev version 0.04-1 (2011-10-20)}{
   \itemize{
     \item added \code{"about"} option to \code{rk.XML.plugin()} to overrule pluginmap defaults
-    \item added \code{rk.plugin.component()}, i.e. modularized the component generation, to allow for more than one
-      component in \code{rk.plugin.skeleton()}, which subsequently gained the new option \code{"components"}
-    \item improved dependency support, \code{rk.plugin.skeleton()} writes dependencies from <about> to DESCRIPTION now
+    \item added \code{rk.plugin.component()}, i.e. modularized the component generation,
+      to allow for more than one component in \code{rk.plugin.skeleton()}, which
+      subsequently gained the new option \code{"components"}
+    \item improved dependency support, \code{rk.plugin.skeleton()} writes dependencies
+      from <about> to DESCRIPTION now
     \item fixed dependency definition in \code{rk.XML.about()}
     \item fixed \code{"verion"} typo in \code{rk.XML.about()}
     \item the dot \code{"."} is now also allowed in file names
@@ -190,12 +250,14 @@
 }
 \section{Changes in rkwarddev version 0.04-0 (2011-10-19)}{
   \itemize{
-    \item for accurcy and consistency with the docs, the \code{"properties"} option changed to \code{"modifiers"} in \code{rk.JS.vars()}
+    \item for accurcy and consistency with the docs, the \code{"properties"} option
+      changed to \code{"modifiers"} in \code{rk.JS.vars()}
     \item added further property modifiers to the internal validation
     \item added class rk.JS.var, including show method
     \item added support for class rk.JS.var in \code{rk.paste.JS()} an \code{id()}
     \item \code{rk.JS.vars()} now returns a list of class rk.JS.var
-    \item added support for all valid modifiers to \code{rk.XML.convert()} and \code{rk.XML.connect()}
+    \item added support for all valid modifiers to \code{rk.XML.convert()} and
+      \code{rk.XML.connect()}
   }
 }
 \section{Changes in rkwarddev version 0.03-7 (2011-10-18)}{
@@ -207,8 +269,10 @@
 }
 \section{Changes in rkwarddev version 0.03-6 (2011-10-13)}{
   \itemize{
-    \item lifted rkward package dependecies to 0.5.7 (needed for \code{rk.load.pluginmaps()})
-    \item \code{rk.XML.menu()} and \code{rk.plugin.skeleton()} can now recursively generate deeper menu structures if you provide it with a list
+    \item lifted rkward package dependecies to 0.5.7 (needed for
+      \code{rk.load.pluginmaps()})
+    \item \code{rk.XML.menu()} and \code{rk.plugin.skeleton()} can now recursively generate
+      deeper menu structures if you provide it with a list
     \item fixed bug in autogeneration of IDs in \code{rk.XML.input()} and \code{rk.XML.saveobj()}
   }
 }
@@ -222,10 +286,11 @@
 \section{Changes in rkwarddev version 0.03-4 (2011-10-10)}{
   \itemize{
     \item added functions \code{rk.XML.code()} and \code{rk.XML.help()}
-    \item fixed bug in internal function \code{check.ID()} (produced false entry nodes under certain circumstances)
+    \item fixed bug in internal function \code{check.ID()} (produced false entry nodes
+      under certain circumstances)
     \item fixed bug in \code{rk.XML.pluginmap()} for automatic component IDs
-    \item fixed bug in \code{rk.plugin.skeleton()} for cases where XML file exists and is not overwritten, but JS/help
-      files need to be generated
+    \item fixed bug in \code{rk.plugin.skeleton()} for cases where XML file exists and is
+      not overwritten, but JS/help files need to be generated
     \item cleaned up \code{rk.XML.pluginmap()} and \code{rk.XML.plugin()} hint code
     \item changed \code{"nodes"} option to \code{"..."} also in \code{rk.XML.menu()}
     \item added beginnings of a vignette (to be continued...)
@@ -233,11 +298,14 @@
 }
 \section{Changes in rkwarddev version 0.03-3 (2011-10-09)}{
   \itemize{
-    \item replaced most of the \code{"nodes"} and \code{"children"} options with \code{"..."} in functions \code{rk.rkh.related()}, \code{rk.rkh.settings()},
-      \code{rk.XML.col()}, \code{rk.XML.components()}, \code{rk.XML.context()}, \code{rk.XML.dialog()}, \code{rk.XML.frame()}, \code{rk.XML.hierarchy()}, \code{rk.XML.logic()},
-      \code{rk.XML.page()}, \code{rk.XML.row()}, \code{rk.XML.snippet()}, \code{rk.XML.snippets()} and \code{rk.XML.wizard()}. therefore, you don't
-      need to \code{list()} objects any more.
-    \item any function which generates an ID now has an automation mechanism for it, which is also the default.
+    \item replaced most of the \code{"nodes"} and \code{"children"} options with \code{"..."} in
+      functions \code{rk.rkh.related()}, \code{rk.rkh.settings()}, \code{rk.XML.col()}, \code{rk.XML.components()},
+      \code{rk.XML.context()}, \code{rk.XML.dialog()}, \code{rk.XML.frame()}, \code{rk.XML.hierarchy()},
+      \code{rk.XML.logic()}, \code{rk.XML.page()}, \code{rk.XML.row()}, \code{rk.XML.snippet()},
+      \code{rk.XML.snippets()} and \code{rk.XML.wizard()}. therefore, you don't need to \code{list()} objects any
+      more.
+    \item any function which generates an ID now has an automation mechanism for
+      it, which is also the default.
   }
 }
 \section{Changes in rkwarddev version 0.03-2 (2011-10-09)}{
@@ -258,69 +326,83 @@
 }
 \section{Changes in rkwarddev version 0.03-0 (2011-10-07)}{
   \itemize{
-    \item redesigned options for \code{rk.plugin.skeleton()} again, to make them more intuitive and flexible
-      at the same time. unfortunately, this breaks backwards compatibility again.
-    \item \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} now only accept \code{rk.XML.about()} made objects
-      for \code{"about"}
-    \item \code{rk.plugin.skeleton()} uses internal function \code{XML2person()} to create nicer Authors at R entries in DESCRIPTION
+    \item redesigned options for \code{rk.plugin.skeleton()} again, to make them more
+      intuitive and flexible at the same time. unfortunately, this breaks backwards
+      compatibility again.
+    \item \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} now only accept
+      \code{rk.XML.about()} made objects for \code{"about"}
+    \item \code{rk.plugin.skeleton()} uses internal function \code{XML2person()} to create nicer
+      Authors at R entries in DESCRIPTION
     \item fixed bug in \code{id()} (now generates JS variable names, not XML IDs)
   }
 }
 \section{Changes in rkwarddev version 0.02-5 (2011-10-06)}{
   \itemize{
-    \item added functions \code{rk.rkh.caption()}, \code{rk.rkh.link()}, \code{rk.rkh.related()}, \code{rk.rkh.section()}, \code{rk.rkh.setting()},
-      \code{rk.rkh.settings()}, \code{rk.rkh.summary()}, \code{rk.rkh.technical()}, \code{rk.rkh.title()} and \code{rk.rkh.usage()}
-    \item \code{rk.rkh.doc()} now only accepts nodes of the above functions as input (and gained support for title and sections)
+    \item added functions \code{rk.rkh.caption()}, \code{rk.rkh.link()}, \code{rk.rkh.related()},
+      \code{rk.rkh.section()}, \code{rk.rkh.setting()}, \code{rk.rkh.settings()}, \code{rk.rkh.summary()},
+      \code{rk.rkh.technical()}, \code{rk.rkh.title()} and \code{rk.rkh.usage()}
+    \item \code{rk.rkh.doc()} now only accepts nodes of the above functions as input (and
+      gained support for title and sections)
     \item \code{rk.rkh.scan()} now also looks for captions
     \item added full help page support to \code{rk.plugin.skeleton()}
     \item added support for properties to \code{rk.JS.vars()}
     \item added function \code{rk.JS.saveobj()} to generate JS code for saveobject nodes.
-    \item added function \code{rk.JS.options()} to generate code for JS variables holding multiple options
+    \item added function \code{rk.JS.options()} to generate code for JS variables holding
+      multiple options
     \item added class rk.JS.opt and a show method for it (use \code{rk.paste.JS()} on that)
-    \item \code{id()} and \code{echo()} now also replace objects of classes rk.JS.opt and rk.JS.arr with their relevant ID
-    \item linked "Introduction to Writing Plugins for RKWard" locally to the manual pages
+    \item \code{id()} and \code{echo()} now also replace objects of classes rk.JS.opt and
+      rk.JS.arr with their relevant ID
+    \item linked "Introduction to Writing Plugins for RKWard" locally to the manual
+      pages
   }
 }
 \section{Changes in rkwarddev version 0.02-4 (2011-10-03)}{
   \itemize{
-    \item some experimental JavaScript generator tools added, might very well be changed soon again:
-    \item added functions \code{rk.JS.vars()}, \code{echo()}, \code{id()}, \code{ite()} and \code{rk.paste.JS()} to help generate JavaScript code
-    \item added classes rk.JS.ite, rk.JS.arr and show methods for them
-    \item function \code{rk.JS.array()} now returns an object of class rk.JS.arr (use \code{rk.paste.JS()} on that)
+    \item some experimental JavaScript generator tools added, might very well be
+      changed soon again: - added functions \code{rk.JS.vars()}, \code{echo()}, \code{id()}, \code{ite()} and
+      \code{rk.paste.JS()} to help generate JavaScript code - added classes rk.JS.ite,
+      rk.JS.arr and show methods for them - function \code{rk.JS.array()} now returns
+      an object of class rk.JS.arr (use \code{rk.paste.JS()} on that)
   }
 }
 \section{Changes in rkwarddev version 0.02-3 (2011-09-30)}{
   \itemize{
-    \item added functions \code{rk.XML.attribute()}, \code{rk.XML.component()}, \code{rk.XML.components()}, \code{rk.XML.context()},
-      \code{rk.XML.entry()}, \code{rk.XML.hierarchy()}, \code{rk.XML.menu()} and \code{rk.XML.require()}
-    \item \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} now use the new functions, which makes them much more flexible
+    \item added functions \code{rk.XML.attribute()}, \code{rk.XML.component()},
+      \code{rk.XML.components()}, \code{rk.XML.context()}, \code{rk.XML.entry()}, \code{rk.XML.hierarchy()}, \code{rk.XML.menu()}
+      and \code{rk.XML.require()}
+    \item \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} now use the new functions,
+      which makes them much more flexible
     \item added option \code{"menu"} to \code{rk.plugin.skeleton()}
-    \item added options \code{"require"}, \code{"x11.context"}, \code{"import.context"} and \code{"hints"} to \code{rk.XML.pluginmap()}
+    \item added options \code{"require"}, \code{"x11.context"}, \code{"import.context"} and \code{"hints"} to
+      \code{rk.XML.pluginmap()}
     \item removed now superfluous option \code{"plugin.dir"} from \code{rk.XML.pluginmap()}
-    \item tuned \code{rk.plugin.skeleton()} to only skip file writing if they exist
+    \item tuned \code{rk.plugin.skeleton()} to only skip file writing if they exist 
   }
 }
 \section{Changes in rkwarddev version 0.02-2 (2011-09-29)}{
   \itemize{
-    \item added \code{"load"} and \code{"show"} options to \code{rk.plugin.skeleton()} to call \code{rk.load.pluginmaps()} and the plugin itself
+    \item added \code{"load"} and \code{"show"} options to \code{rk.plugin.skeleton()} to call
+      \code{rk.load.pluginmaps()} and the plugin itself
     \item added function \code{rk.build.plugin()}
   }
 }
 \section{Changes in rkwarddev version 0.02-1 (2011-09-28)}{
   \itemize{
-    \item added functions \code{rk.XML.insert()}, \code{rk.XML.include()}, \code{rk.XML.embed()}, \code{rk.XML.preview()},
-      \code{rk.XML.snippet()}, and \code{rk.XML.snippets()}
-    \item added support for snippets section to \code{rk.XML.plugin()} and \code{rk.plugin.skeleton()}
+    \item added functions \code{rk.XML.insert()}, \code{rk.XML.include()}, \code{rk.XML.embed()},
+      \code{rk.XML.preview()}, \code{rk.XML.snippet()}, and \code{rk.XML.snippets()}
+    \item added support for snippets section to \code{rk.XML.plugin()} and
+      \code{rk.plugin.skeleton()}
     \item included formula node into \code{rk.XML.vars()} wrapper
-    \item \code{rk.XML.varslot()} now automatically sets "multi=TRUE" if \code{"min"}, \code{"max"} or \code{"any"} are set
+    \item \code{rk.XML.varslot()} now automatically sets "multi=TRUE" if \code{"min"}, \code{"max"} or
+      \code{"any"} are set
   }
 }
 \section{Changes in rkwarddev version 0.02-0 (2011-09-27)}{
   \itemize{
-    \item redesigned options for \code{rk.XML.plugin()} and \code{rk.plugin.skeleton()} for more consistency.
-      unfortunately, this breaks backwards compatibility!
-    \item added functions \code{rk.XML.varselector()}, \code{rk.XML.copy()}, \code{rk.XML.dialog()}, \code{rk.XML.page()} and
-      \code{rk.XML.wizard()}
+    \item redesigned options for \code{rk.XML.plugin()} and \code{rk.plugin.skeleton()} for more
+      consistency. unfortunately, this breaks backwards compatibility!
+    \item added functions \code{rk.XML.varselector()}, \code{rk.XML.copy()}, \code{rk.XML.dialog()},
+      \code{rk.XML.page()} and \code{rk.XML.wizard()}
     \item added type checks to \code{rk.XML.spinbox()}
     \item added \code{"id.name"} and \code{"label"} to various functions
     \item updated \code{rk.XML.formula()}
@@ -328,12 +410,13 @@
 }
 \section{Changes in rkwarddev version 0.01-5 (2011-09-25)}{
   \itemize{
-    \item added functions \code{rk.XML.formula()}, \code{rk.XML.convert()}, \code{rk.XML.connect()}, \code{rk.XML.logic()},
-      \code{rk.XML.set()} and \code{rk.XML.external()}
-    \item added possibility to add custom XML code to the logic section with \code{rk.XML.plugin()}
-      and \code{rk.plugin.skeleton()}
+    \item added functions \code{rk.XML.formula()}, \code{rk.XML.convert()}, \code{rk.XML.connect()},
+      \code{rk.XML.logic()}, \code{rk.XML.set()} and \code{rk.XML.external()}
+    \item added possibility to add custom XML code to the logic section with
+      \code{rk.XML.plugin()} and \code{rk.plugin.skeleton()}
     \item fixed id setting in \code{rk.XML.browser()}
-    \item simplified \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} by making \code{"about"} entirely optional
+    \item simplified \code{rk.plugin.skeleton()} and \code{rk.XML.pluginmap()} by making \code{"about"}
+      entirely optional
   }
 }
 \section{Changes in rkwarddev version 0.01-4 (2011-09-22)}{
@@ -345,27 +428,30 @@
     \item added \code{"edit"} and \code{"create"} options to \code{rk.plugin.skeleton()}
     \item added function \code{rk.XML.varslot()}
     \item added possibility to add custom XML nodes to the varslot in \code{rk.XML.vars()}
-    \item added possibility to paste ready-to-use JavaScript code directly to the \code{preprocess()},
-      \code{calculate()} and \code{printout()} functions, respectively
+    \item added possibility to paste ready-to-use JavaScript code directly to the
+      \code{preprocess()}, \code{calculate()} and \code{printout()} functions, respectively
   }
 }
 \section{Changes in rkwarddev version 0.01-3 (2011-09-16)}{
   \itemize{
-    \item added \code{rk.XML.spinbox()} and missing options to \code{rk.XML.browser()} and \code{rk.XML.saveobj()}
+    \item added \code{rk.XML.spinbox()} and missing options to \code{rk.XML.browser()} and
+      \code{rk.XML.saveobj()}
     \item corrected browser default type in \code{rk.XML.browser()}
     \item added wizard option to \code{rk.plugin.skeleton()}
   }
 }
 \section{Changes in rkwarddev version 0.01-2 (2011-09-15)}{
   \itemize{
-    \item reworked \code{rk.XML.about()} to use person class objects for authors, and need less info to
-      produce usable output
+    \item reworked \code{rk.XML.about()} to use person class objects for authors, and need
+      less info to produce usable output
   }
 }
 \section{Changes in rkwarddev version 0.01-1 (2011-09-05)}{
   \itemize{
-    \item added \code{rk.JS.scan()}, \code{rk.JS.doc()}, \code{rk.JS.array()}, \code{rk.rkh.scan()} and \code{rk.rkh.doc()}
-    \item added \code{rk.XML.browser()},  \code{rk.XML.input()},  \code{rk.XML.saveobj()},  \code{rk.XML.stretch()} and  \code{rk.XML.text()}
+    \item added \code{rk.JS.scan()}, \code{rk.JS.doc()}, \code{rk.JS.array()}, \code{rk.rkh.scan()} and
+      \code{rk.rkh.doc()}
+    \item added \code{rk.XML.browser()},  \code{rk.XML.input()},  \code{rk.XML.saveobj()}, 
+      \code{rk.XML.stretch()} and  \code{rk.XML.text()}
     \item added \code{rk.testsuite.doc()}
     \item shortened package name from \code{"rkwardplugdev"} to \code{"rkwarddev"}
     \item merged code into RKWard's svn tree
@@ -374,8 +460,8 @@
 \section{Changes in rkwarddev version 0.01-0 (2011-08-30)}{
   \itemize{
     \item forked rk.* functions from XiMpLe package into this one
-    \item added functions \code{rk.XML.cbox()}, \code{rk.XML.row()}, \code{rk.XML.col()}, \code{rk.XML.frame()},
-      \code{rk.XML.radio()} and \code{rk.XML.vars()}
+    \item added functions \code{rk.XML.cbox()}, \code{rk.XML.row()}, \code{rk.XML.col()},
+      \code{rk.XML.frame()}, \code{rk.XML.radio()} and \code{rk.XML.vars()}
     \item rewrote the ID handling
     \item added docs
     \item initial release via reaktanz.de

Modified: trunk/rkward/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
===================================================================
(Binary files differ)

Added: trunk/rkward/packages/rkwarddev/man/rk.XML.dependency_check.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/rk.XML.dependency_check.Rd	                        (rev 0)
+++ trunk/rkward/packages/rkwarddev/man/rk.XML.dependency_check.Rd	2013-02-07 21:10:55 UTC (rev 4529)
@@ -0,0 +1,58 @@
+\name{rk.XML.dependency_check}
+\alias{rk.XML.dependency_check}
+\title{Create XML node "dependency_check" for RKWard pluginmaps}
+\usage{
+  rk.XML.dependency_check(id.name, dependencies = NULL,
+    package = NULL, pluginmap = NULL, hints = FALSE)
+}
+\arguments{
+  \item{id.name}{Character string, a unique ID for this
+  plugin element.}
+
+  \item{dependencies}{A named list with these elements:
+  \describe{ \item{rkward.min}{Minimum RKWard version
+  needed for this plugin (optional)}
+  \item{rkward.max}{Maximum RKWard version needed for this
+  plugin (optional)} \item{R.min}{Minimum R version needed
+  for this plugin (optional)} \item{R.max}{Maximum R
+  version needed for this plugin (optional)} }}
+
+  \item{package}{A list of named character vectors, each
+  with these elements: \describe{ \item{name}{Name of a
+  package this plugin depends on (optional)}
+  \item{min}{Minimum version of the package (optional)}
+  \item{max}{Maximum version of the package (optional)}
+  \item{repository}{Repository to download the package
+  (optional)} }}
+
+  \item{pluginmap}{A named list with these elements:
+  \describe{ \item{name}{Identifier of a pluginmap this
+  plugin depends on (optional)} \item{url}{URL to get the
+  pluginmap (optional)} }}
+
+  \item{hints}{Logical, if \code{TRUE}, \code{NULL} values
+  will be replaced with example text.}
+}
+\description{
+  Create XML node "dependency_check" for RKWard pluginmaps
+}
+\examples{
+dependency_check.node <- rk.XML.dependency_check(
+	dependencies=list(
+		rkward.min="0.5.3",
+		rkward.max="",
+		R.min="2.10",
+		R.max=""),
+	package=list(
+		c(name="heisenberg", min="0.11-2", max="",
+			repository="http://rforge.r-project.org"),
+		c(name="DreamsOfPi", min="0.2", max="", repository="")),
+	pluginmap=list(
+		c(name="heisenberg.pluginmap", url="http://eternalwondermaths.example.org/hsb"))
+)
+}
+\seealso{
+  \href{help:rkwardplugins}{Introduction to Writing Plugins
+  for RKWard}
+}
+

Modified: trunk/rkward/packages/rkwarddev/man/rk.XML.require.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/rk.XML.require.Rd	2013-02-07 16:11:32 UTC (rev 4528)
+++ trunk/rkward/packages/rkwarddev/man/rk.XML.require.Rd	2013-02-07 21:10:55 UTC (rev 4529)
@@ -2,11 +2,17 @@
 \alias{rk.XML.require}
 \title{Create XML "require" node for RKWard plugins}
 \usage{
-  rk.XML.require(file)
+  rk.XML.require(file = NULL, map = NULL)
 }
 \arguments{
   \item{file}{Character string, file name of another
-  .pluginmap file to be included.}
+  .pluginmap file to be included. Should be preferred over
+  \code{map} if that file is in the same package.}
+
+  \item{map}{Character string, should be
+  \code{"namespace::id"} of another .pluginmap to be
+  included.  Can be used to address plugin maps which are
+  not part of the same plugin package.}
 }
 \value{
   An object of class \code{XiMpLe.node}.
@@ -15,6 +21,10 @@
   This function will create a require node for .pluginmap
   files.
 }
+\details{
+  Note that only one of the values can be set at a time.
+  \code{file} should be preferred whenever possible.
+}
 \examples{
 test.require <- rk.XML.require("another.pluginmap")
 cat(pasteXML(test.require))





More information about the rkward-tracker mailing list