[rkward-cvs] SF.net SVN: rkward:[3853] trunk/rkward/rkward/rbackend/rpackages/rkwarddev
m-eik at users.sourceforge.net
m-eik at users.sourceforge.net
Tue Sep 27 20:44:03 UTC 2011
Revision: 3853
http://rkward.svn.sourceforge.net/rkward/?rev=3853&view=rev
Author: m-eik
Date: 2011-09-27 20:44:03 +0000 (Tue, 27 Sep 2011)
Log Message:
-----------
rkwarddev: mainly added type checks
Modified Paths:
--------------
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/ChangeLog
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk-internal.R
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.plugin.R
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.pluginmap.R
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.spinbox.R
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.plugin.skeleton.R
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.plugin.Rd
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.pluginmap.Rd
trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.plugin.skeleton.Rd
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/ChangeLog
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/ChangeLog 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/ChangeLog 2011-09-27 20:44:03 UTC (rev 3853)
@@ -1,10 +1,11 @@
ChangeLog for package rkwarddev
-## 0.02-0 (2011-09-26)
+## 0.02-0 (2011-09-27)
- redesigned options for rk.XML.plugin() and rk.plugin.skeleton() for more consistency.
unfortunately, this breaks backwards compatibility!
- added functions rk.XML.varselector(), rk.XML.copy(), rk.XML.dialog(), rk.XML.page() and
rk.XML.wizard()
+ - added type checks to rk.XML.spinbox()
- added "id.name" and "label" to various functions
- updated rk.XML.formula()
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk-internal.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk-internal.R 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk-internal.R 2011-09-27 20:44:03 UTC (rev 3853)
@@ -231,4 +231,32 @@
}
}
}
-## end function prop.validity()
\ No newline at end of file
+## end function prop.validity()
+
+## function check.type()
+check.type <- function(value, type, var.name, warn.only=TRUE){
+ if(inherits(value, type)){
+ return(invisible(NULL))
+ } else {
+ msg.text <- paste(sQuote(var.name), " should be of type ", type, "!", sep="")
+ if(isTRUE(warn.only)){
+ warning(msg.text)
+ } else {
+ stop(simpleError(msg.text))
+ }
+ }
+}
+## end function check.type()
+
+## function clean.name()
+clean.name <- function(name, message=TRUE){
+ name.orig <- name
+ name <- gsub("[[:space:]]*[^[:alnum:]_]*", "", name)
+ if(!identical(name.orig, name)){
+ if(isTRUE(message)){
+ message(paste("For filenames ", sQuote(name.orig), " was renamed to ", sQuote(name), ".", sep=""))
+ } else {}
+ } else {}
+ return(name)
+}
+## end function clean.name()
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.plugin.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.plugin.R 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.plugin.R 2011-09-27 20:44:03 UTC (rev 3853)
@@ -1,21 +1,21 @@
#' Create XML document for RKWard plugins
#'
-#' @param name Character string, the name of the plugin.
-#' @param dialog An object of class \code{XiMpLe.node} to be pasted as the \code{<dialog>} section
-#' (but only if \code{provides} includes \code{"dialog"} as well). See
+#' @param name Character string, the name of the plugin. Will be used for the names of the JavaScript and
+#' help files to be included, following the scheme \emph{"<name>.<ext>"}.
+#' @param dialog An object of class \code{XiMpLe.node} to be pasted as the \code{<dialog>} section. See
#' \code{\link[rkwarddev:rk.XML.dialog]{rk.XML.dialog}} for details.
-#' @param wizard An object of class \code{XiMpLe.node} to be pasted as the \code{<wizard>} section
-#' (but only if \code{provides} includes \code{"wizard"} as well). See
+#' @param wizard An object of class \code{XiMpLe.node} to be pasted as the \code{<wizard>} section. See
#' \code{\link[rkwarddev:rk.XML.wizard]{rk.XML.wizard}} for details.
-#' @param logic An object of class \code{XiMpLe.node} to be pasted as the \code{<logic>} section
-#' (but only if \code{provides} includes \code{"logic"} as well). See
+#' @param logic An object of class \code{XiMpLe.node} to be pasted as the \code{<logic>} section. See
#' \code{\link[rkwarddev:rk.XML.logic]{rk.XML.logic}} for details.
-#' @param provides Character vector with at least one entry of \code{"logic"}, \code{"dialog"} or \code{"wizard"}, defining what the document provides.
-#' If \code{"logic"} is specified, a logic section will be added to the document. If \code{logic=NULL}, must be edited manually and is therefore commented out.
+#' @param provides Character vector with possible entries of \code{"logic"}, \code{"dialog"} or \code{"wizard"}, defining what
+#' sections the document should provide even if \code{dialog}, \code{wizard} and \code{logic} are \code{NULL}.
+#' These sections must be edited manually and some parts are therefore commented out.
#' @param help Logical, if \code{TRUE} an include tag for a help file named \emph{"<name>.rkh"} will be added to the header.
#' @param pluginmap Character string, relative path to the pluginmap file, which will then be included in the head of this document.
#' @param label Character string, a text label for the plugin's top level, i.e. the window title of the dialog.
#' Will only be used if \code{dialog} or \code{wizard} are \code{NULL}.
+#' @param clean.name Logical, if \code{TRUE}, all non-alphanumeric characters except the underscore (\code{"_"}) will be removed from \code{name}.
#' @return An object of class \code{XiMpLe.doc}.
#' @export
#' @examples
@@ -30,14 +30,13 @@
#' test.tabbook <- rk.XML.tabbook("My Tabbook", tab.labels=c("First Tab",
#' "Second Tab"), dialog=list(test.checkboxes, test.dropdown))
#' # make a plugin with that tabbook
-#' test.plugin <- rk.XML.plugin("My test", label="Check this out", dialog=test.tabbook)
+#' test.plugin <- rk.XML.plugin("My test", dialog=test.tabbook)
#' cat(pasteXMLTree(test.plugin, shine=1))
-rk.XML.plugin <- function(name, dialog=NULL, wizard=NULL, logic=NULL, provides=c("logic", "dialog"), help=TRUE, pluginmap=NULL, label=NULL){
- name.orig <- name
- name <- gsub("[[:space:]]*[^[:alnum:]]*", "", name)
- if(!identical(name.orig, name)){
- message(paste("For filenames ", sQuote(name.orig), " was renamed to ", sQuote(name), ".", sep=""))
+rk.XML.plugin <- function(name, dialog=NULL, wizard=NULL, logic=NULL, provides=NULL, help=TRUE, pluginmap=NULL, label=NULL, clean.name=TRUE){
+ if(isTRUE(clean.name)){
+ name.orig <- name
+ name <- clean.name(name)
} else {}
all.children <- list(new("XiMpLe.node",
@@ -59,8 +58,8 @@
)
} else {}
- if("logic" %in% provides){
- if(is.null(logic)){
+ if(is.null(logic)){
+ if("logic" %in% provides){
lgc.children <- list(
new("XiMpLe.node",
# add these as comments because they need editing
@@ -74,42 +73,42 @@
name="logic",
children=lgc.children
)
+ } else {}
+ } else {
+ # check if this is *really* a logic section, otherwise quit and go dancing
+ if(inherits(logic, "XiMpLe.node")){
+ logic.node.name <- logic at name
} else {
- # check if this is *really* a logic section, otherwise quit and go dancing
- if(inherits(logic, "XiMpLe.node")){
- logic.node.name <- logic at name
- } else {
- logic.node.name <- "yougottabekiddingme"
- }
- if(!identical(logic.node.name, "logic")){
- stop(simpleError("I don't know what this is, but 'logic' is not a logic section!"))
- } else {}
- all.children[[length(all.children)+1]] <- logic
+ logic.node.name <- "yougottabekiddingme"
}
- } else {}
+ if(!identical(logic.node.name, "logic")){
+ stop(simpleError("I don't know what this is, but 'logic' is not a logic section!"))
+ } else {}
+ all.children[[length(all.children)+1]] <- logic
+ }
- if("dialog" %in% provides){
- if(is.null(dialog)){
+ if(is.null(dialog)){
+ if("dialog" %in% provides){
all.children[[length(all.children)+1]] <- new("XiMpLe.node",
name="dialog",
attributes=list(label=label),
value="")
+ } else {}
+ } else {
+ # check if this is *really* a dialog section
+ if(inherits(dialog, "XiMpLe.node")){
+ dialog.node.name <- dialog at name
} else {
- # check if this is *really* a dialog section
- if(inherits(dialog, "XiMpLe.node")){
- dialog.node.name <- dialog at name
- } else {
- dialog.node.name <- "yougottabekiddingme"
- }
- if(!identical(dialog.node.name, "dialog")){
- stop(simpleError("I don't know what this is, but 'dialog' is not a dialog section!"))
- } else {}
- all.children[[length(all.children)+1]] <- dialog
+ dialog.node.name <- "yougottabekiddingme"
}
- } else {}
+ if(!identical(dialog.node.name, "dialog")){
+ stop(simpleError("I don't know what this is, but 'dialog' is not a dialog section!"))
+ } else {}
+ all.children[[length(all.children)+1]] <- dialog
+ }
- if("wizard" %in% provides){
- if(is.null(wizard)){
+ if(is.null(wizard)){
+ if("wizard" %in% provides){
# create a first page for the wizard section
plugin.wizard.page <- new("XiMpLe.node",
name="page",
@@ -121,18 +120,18 @@
children=child.list(plugin.wizard.page),
value="")
all.children[[length(all.children)+1]] <- plugin.wizard
+ } else {}
+ } else {
+ # check if this is *really* a wizard section
+ if(inherits(wizard, "XiMpLe.node")){
+ wizard.node.name <- wizard at name
} else {
- # check if this is *really* a wizard section
- if(inherits(wizard, "XiMpLe.node")){
- wizard.node.name <- wizard at name
- } else {
- wizard.node.name <- "yougottabekiddingme"
- }
- if(!identical(wizard.node.name, "wizard")){
- stop(simpleError("I don't know what this is, but 'wizard' is not a wizard section!"))
- } else {}
- all.children[[length(all.children)+1]] <- wizard
+ wizard.node.name <- "yougottabekiddingme"
}
+ if(!identical(wizard.node.name, "wizard")){
+ stop(simpleError("I don't know what this is, but 'wizard' is not a wizard section!"))
+ } else {}
+ all.children[[length(all.children)+1]] <- wizard
}
top.doc <- new("XiMpLe.node",
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.pluginmap.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.pluginmap.R 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.pluginmap.R 2011-09-27 20:44:03 UTC (rev 3853)
@@ -9,14 +9,14 @@
#' @param hierarchy A character vector with instructions where to place the plugin in the menu hierarchy,
#' one string for each included component. Valid values are \code{"analysis"}, \code{"plots"} and
#' \code{"data"}. To place your dialogs somewhere else, edit the pluginmap manually.
+#' @param clean.name Logical, if \code{TRUE}, all non-alphanumeric characters except the underscore (\code{"_"}) will be removed from \code{name}.
#' @export
-rk.XML.pluginmap <- function(name, about=NULL, components, plugin.dir="plugins", hierarchy="analysis"){
- # to besure, remove all non-character symbols from name
- name.orig <- name
- name <- gsub("[[:space:]]*[^[:alnum:]]*", "", name)
- if(!identical(name.orig, name)){
- message(paste("For filenames ", sQuote(name.orig), " was renamed to ", sQuote(name), ".", sep=""))
+rk.XML.pluginmap <- function(name, about=NULL, components, plugin.dir="plugins", hierarchy="analysis", clean.name=TRUE){
+ if(isTRUE(clean.name)){
+ # to besure, remove all non-character symbols from name
+ name.orig <- name
+ name <- clean.name(name)
} else {}
# .pluginmap has three children in <document>:
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.spinbox.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.spinbox.R 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.XML.spinbox.R 2011-09-27 20:44:03 UTC (rev 3853)
@@ -25,23 +25,28 @@
attr.list[["id"]] <- id.name
} else {}
- if(is.numeric(initial) & initial != 0){
- attr.list[["initial"]] <- initial
+ if(initial != 0){
+ check.type(initial, "numeric", "initial")
+ attr.list[["initial"]] <- as.numeric(initial)
} else {}
if(!is.null(min)){
- attr.list[["min"]] <- min
+ check.type(min, "numeric", "min")
+ attr.list[["min"]] <- as.numeric(min)
} else {}
if(!is.null(max)){
- attr.list[["max"]] <- max
+ check.type(max, "numeric", "max")
+ attr.list[["max"]] <- as.numeric(max)
} else {}
if(!isTRUE(real)){
attr.list[["type"]] <- "integer"
} else {}
- if(is.numeric(precision) & precision != 2){
- attr.list[["precision"]] <- precision
+ if(precision != 2){
+ check.type(precision, "numeric", "precision")
+ attr.list[["precision"]] <- as.numeric(precision)
} else {}
- if(is.numeric(max.precision) & max.precision != 8){
- attr.list[["max.precision"]] <- max.precision
+ if(max.precision != 8){
+ check.type(max.precision, "numeric", "max.precision")
+ attr.list[["max.precision"]] <- as.numeric(max.precision)
} else {}
node <- new("XiMpLe.node",
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.plugin.skeleton.R
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.plugin.skeleton.R 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/R/rk.plugin.skeleton.R 2011-09-27 20:44:03 UTC (rev 3853)
@@ -6,17 +6,15 @@
#' See \code{\link[rkwarddev:rk.XML.about]{rk.XML.about}} for details and a full list of elements!
#' If \code{NULL}, no \code{DESCRIPTION} file will be created either.
#' @param path Character sting, path to the main directory where the skeleton should be created.
-#' @param dialog An object of class \code{XiMpLe.node} to be pasted as the \code{<dialog>} section
-#' (but only if \code{provides} includes \code{"dialog"} as well). See
+#' @param dialog An object of class \code{XiMpLe.node} to be pasted as the \code{<dialog>} section. See
#' \code{\link[rkwarddev:rk.XML.dialog]{rk.XML.dialog}} for details.
-#' @param wizard An object of class \code{XiMpLe.node} to be pasted as the \code{<wizard>} section
-#' (but only if \code{provides} includes \code{"wizard"} as well). See
+#' @param wizard An object of class \code{XiMpLe.node} to be pasted as the \code{<wizard>} section. See
#' \code{\link[rkwarddev:rk.XML.wizard]{rk.XML.wizard}} for details.
-#' @param logic An object of class \code{XiMpLe.node} to be pasted as the \code{<logic>} section
-#' (but only if \code{provides} includes \code{"logic"} as well). See
+#' @param logic An object of class \code{XiMpLe.node} to be pasted as the \code{<logic>} section. See
#' \code{\link[rkwarddev:rk.XML.logic]{rk.XML.logic}} for details.
-#' @param provides Character vector with at least one entry of \code{"logic"}, \code{"dialog"} or \code{"wizard"}, defining what the plugin XML provides.
-#' If \code{"logic"} is specified, a logic section will be added to the document. If \code{logic=NULL}, must be edited manually and is therefore commented out.
+#' @param provides Character vector with possible entries of \code{"logic"}, \code{"dialog"} or \code{"wizard"}, defining what
+#' sections the document should provide even if \code{dialog}, \code{wizard} and \code{logic} are \code{NULL}.
+#' These sections must be edited manually and some parts are therefore commented out.
#' @param dial.require A character vector with names of R packages that the dialog requires.
#' @param overwrite Logical, whether existing files should be replaced. Defaults to \code{FALSE}.
#' @param tests Logical, whether directories and files for plugin tests should be created.
@@ -105,10 +103,7 @@
JS.prep=NULL, JS.calc=NULL, JS.prnt=NULL, create=c("pmap", "xml", "js", "rkh", "desc"), edit=FALSE){
# to besure, remove all non-character symbols from name
name.orig <- name
- name <- gsub("[[:space:]]*[^[:alnum:]]*", "", name)
- if(!identical(name.orig, name)){
- message(paste("For filenames ", sQuote(name.orig), " was renamed to ", sQuote(name), ".", sep=""))
- } else {}
+ name <- clean.name(name)
if(!is.null(about)){
# create an about.node, which probably has some default values
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.plugin.Rd
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.plugin.Rd 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.plugin.Rd 2011-09-27 20:44:03 UTC (rev 3853)
@@ -3,36 +3,36 @@
\title{Create XML document for RKWard plugins}
\usage{
rk.XML.plugin(name, dialog = NULL, wizard = NULL, logic =
- NULL, provides = c("logic", "dialog"), help = TRUE,
- pluginmap = NULL, label = NULL)
+ NULL, provides = NULL, help = TRUE, pluginmap = NULL,
+ label = NULL, clean.name = TRUE)
}
\arguments{
- \item{name}{Character string, the name of the plugin.}
+ \item{name}{Character string, the name of the plugin.
+ Will be used for the names of the JavaScript and help
+ files to be included, following the scheme
+ \emph{"<name>.<ext>"}.}
\item{dialog}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<dialog>} section (but only if
- \code{provides} includes \code{"dialog"} as well). See
+ pasted as the \code{<dialog>} section. See
\code{\link[rkwarddev:rk.XML.dialog]{rk.XML.dialog}} for
details.}
\item{wizard}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<wizard>} section (but only if
- \code{provides} includes \code{"wizard"} as well). See
+ pasted as the \code{<wizard>} section. See
\code{\link[rkwarddev:rk.XML.wizard]{rk.XML.wizard}} for
details.}
\item{logic}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<logic>} section (but only if
- \code{provides} includes \code{"logic"} as well). See
+ pasted as the \code{<logic>} section. See
\code{\link[rkwarddev:rk.XML.logic]{rk.XML.logic}} for
details.}
- \item{provides}{Character vector with at least one entry
- of \code{"logic"}, \code{"dialog"} or \code{"wizard"},
- defining what the document provides. If \code{"logic"} is
- specified, a logic section will be added to the document.
- If \code{logic=NULL}, must be edited manually and is
- therefore commented out.}
+ \item{provides}{Character vector with possible entries of
+ \code{"logic"}, \code{"dialog"} or \code{"wizard"},
+ defining what sections the document should provide even
+ if \code{dialog}, \code{wizard} and \code{logic} are
+ \code{NULL}. These sections must be edited manually and
+ some parts are therefore commented out.}
\item{help}{Logical, if \code{TRUE} an include tag for a
help file named \emph{"<name>.rkh"} will be added to the
@@ -46,6 +46,10 @@
plugin's top level, i.e. the window title of the dialog.
Will only be used if \code{dialog} or \code{wizard} are
\code{NULL}.}
+
+ \item{clean.name}{Logical, if \code{TRUE}, all
+ non-alphanumeric characters except the underscore
+ (\code{"_"}) will be removed from \code{name}.}
}
\value{
An object of class \code{XiMpLe.doc}.
@@ -65,7 +69,7 @@
test.tabbook <- rk.XML.tabbook("My Tabbook", tab.labels=c("First Tab",
"Second Tab"), dialog=list(test.checkboxes, test.dropdown))
# make a plugin with that tabbook
-test.plugin <- rk.XML.plugin("My test", label="Check this out", dialog=test.tabbook)
+test.plugin <- rk.XML.plugin("My test", dialog=test.tabbook)
cat(pasteXMLTree(test.plugin, shine=1))
}
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.pluginmap.Rd
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.pluginmap.Rd 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.XML.pluginmap.Rd 2011-09-27 20:44:03 UTC (rev 3853)
@@ -3,7 +3,8 @@
\title{Write a pluginmap file for RKWard}
\usage{
rk.XML.pluginmap(name, about = NULL, components,
- plugin.dir = "plugins", hierarchy = "analysis")
+ plugin.dir = "plugins", hierarchy = "analysis",
+ clean.name = TRUE)
}
\arguments{
\item{name}{Character string, name of the plugin.}
@@ -25,6 +26,10 @@
\code{"analysis"}, \code{"plots"} and \code{"data"}. To
place your dialogs somewhere else, edit the pluginmap
manually.}
+
+ \item{clean.name}{Logical, if \code{TRUE}, all
+ non-alphanumeric characters except the underscore
+ (\code{"_"}) will be removed from \code{name}.}
}
\description{
Write a pluginmap file for RKWard
Modified: trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.plugin.skeleton.Rd
===================================================================
--- trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.plugin.skeleton.Rd 2011-09-27 20:39:46 UTC (rev 3852)
+++ trunk/rkward/rkward/rbackend/rpackages/rkwarddev/man/rk.plugin.skeleton.Rd 2011-09-27 20:44:03 UTC (rev 3853)
@@ -23,29 +23,26 @@
where the skeleton should be created.}
\item{dialog}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<dialog>} section (but only if
- \code{provides} includes \code{"dialog"} as well). See
+ pasted as the \code{<dialog>} section. See
\code{\link[rkwarddev:rk.XML.dialog]{rk.XML.dialog}} for
details.}
\item{wizard}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<wizard>} section (but only if
- \code{provides} includes \code{"wizard"} as well). See
+ pasted as the \code{<wizard>} section. See
\code{\link[rkwarddev:rk.XML.wizard]{rk.XML.wizard}} for
details.}
\item{logic}{An object of class \code{XiMpLe.node} to be
- pasted as the \code{<logic>} section (but only if
- \code{provides} includes \code{"logic"} as well). See
+ pasted as the \code{<logic>} section. See
\code{\link[rkwarddev:rk.XML.logic]{rk.XML.logic}} for
details.}
- \item{provides}{Character vector with at least one entry
- of \code{"logic"}, \code{"dialog"} or \code{"wizard"},
- defining what the plugin XML provides. If \code{"logic"}
- is specified, a logic section will be added to the
- document. If \code{logic=NULL}, must be edited manually
- and is therefore commented out.}
+ \item{provides}{Character vector with possible entries of
+ \code{"logic"}, \code{"dialog"} or \code{"wizard"},
+ defining what sections the document should provide even
+ if \code{dialog}, \code{wizard} and \code{logic} are
+ \code{NULL}. These sections must be edited manually and
+ some parts are therefore commented out.}
\item{dial.require}{A character vector with names of R
packages that the dialog requires.}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the rkward-tracker
mailing list