[rkward] packages/rkwarddev: new function modifiers()
m.eik michalke
meik.michalke at uni-duesseldorf.de
Tue Nov 10 14:13:13 UTC 2015
Git commit 8b9ab95b9d059716e58712bb0d829bcaddf5806e by m.eik michalke.
Committed on 10/11/2015 at 14:04.
Pushed by meikm into branch 'master'.
new function modifiers()
- instead of hinting to an internal object, modifiers() can now be used to check for valid modifiers of XML nodes
- also improved the output of internal modifier checks
M +1 -1 packages/rkwarddev/R/50_all.valid.modifiers.R
A +50 -0 packages/rkwarddev/R/modifiers.R
M +7 -6 packages/rkwarddev/R/rk-internal.R
A +21 -0 packages/rkwarddev/man/modifiers.Rd
http://commits.kde.org/rkward/8b9ab95b9d059716e58712bb0d829bcaddf5806e
diff --git a/packages/rkwarddev/R/50_all.valid.modifiers.R b/packages/rkwarddev/R/50_all.valid.modifiers.R
index 29b8d19..3da02ea 100644
--- a/packages/rkwarddev/R/50_all.valid.modifiers.R
+++ b/packages/rkwarddev/R/50_all.valid.modifiers.R
@@ -1,5 +1,5 @@
## list with valid modifiers
-# used by -- at least -- modif.validity()
+# used by -- at least -- modif.validity() and modifiers()
all.valid.modifiers <- list(
all=c("", "visible", "visible.not", "visible.numeric", "enabled", "enabled.not", "enabled.numeric",
"required", "true", "false", "not", "numeric", "preprocess", "calculate", "printout", "preview"),
diff --git a/packages/rkwarddev/R/modifiers.R b/packages/rkwarddev/R/modifiers.R
new file mode 100644
index 0000000..e811cdb
--- /dev/null
+++ b/packages/rkwarddev/R/modifiers.R
@@ -0,0 +1,50 @@
+# Copyright 2015 Meik Michalke <meik.michalke at hhu.de>
+#
+# This file is part of the R package rkwarddev.
+#
+# rkwarddev is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# rkwarddev is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with rkwarddev. If not, see <http://www.gnu.org/licenses/>.
+
+#' Get all valid modifiers for a given XML node
+#'
+#' In case you want to see which modifiers are definied for a certain XML node,
+#' just call this helper function.
+#'
+#' @param obj An object of class \code{XiMpLe.node}, or a character string containing
+#' the XML node name you're interested in. If set to \code{"all"} returns all defined
+#' modifiers.
+#' @return A character vector of valid modifiers.
+#' @export
+#' @expamples
+#' myCheckbox <- rk.XML.cbox("Check for action")
+#' modifiers(myCheckbox)
+
+modifiers <- function(obj="all"){
+ if(is.XiMpLe.node(obj)){
+ nodeName <- XMLName(obj)
+ } else if(is.character(obj) & length(obj) == 1){
+ nodeName <- obj
+ } else {
+ stop(simpleError("'obj' must either be a XiMpLe node or a character string!"))
+ }
+
+ if(identical(nodeName, "all")){
+ result <- all.valid.modifiers
+ } else if(nodeName %in% names(all.valid.modifiers)){
+ result <- all.valid.modifiers[c("all", nodeName)]
+ } else {
+ stop(simpleError(paste0("There are no modifiers defined for node '", nodeName,"'!")))
+ }
+
+ return(result)
+}
diff --git a/packages/rkwarddev/R/rk-internal.R b/packages/rkwarddev/R/rk-internal.R
index 0dbf97b..9b02915 100644
--- a/packages/rkwarddev/R/rk-internal.R
+++ b/packages/rkwarddev/R/rk-internal.R
@@ -1,4 +1,4 @@
-# Copyright 2010-2014 Meik Michalke <meik.michalke at hhu.de>
+# Copyright 2010-2015 Meik Michalke <meik.michalke at hhu.de>
#
# This file is part of the R package rkwarddev.
#
@@ -677,17 +677,18 @@ modif.validity <- function(source, modifier, ignore.empty=TRUE, warn.only=TRUE,
invalid.modif <- !unlist(modifier) %in% valid.modifs
if(any(invalid.modif)){
if(isTRUE(warn.only)){
- warning(paste0("Some modifier you provided is invalid for '",tag.name,"' and was ignored: ",
- paste(modifier[invalid.modif], collapse=", "), "\n",
- "For a list of valid modifiers see rkwarddev:::all.valid.modifiers"), call.=FALSE)
+ warning(paste0("Some modifier you provided is invalid for '", tag.name, "' and was ignored: \"",
+ paste(modifier[invalid.modif], collapse="\", \""), "\"\n\n",
+ "Known modifiers for '", tag.name, "' nodes are:\n\t\"", paste0(unlist(modifiers(obj=tag.name)[[tag.name]]), collapse="\", \""), "\"\n\n",
+ "For a list of all valid modifiers call modifiers(\"", tag.name, "\")"), call.=FALSE)
if(isTRUE(bool)){
return(!invalid.modif)
} else {
return("")
}
} else {
- stop(simpleError(paste0("Some modifier you provided is invalid for '",tag.name,"' and was ignored: ",
- paste(modifier[invalid.modif], collapse=", "))))
+ stop(simpleError(paste0("Some modifier you provided is invalid for '", tag.name, "' and was ignored: \"",
+ paste(modifier[invalid.modif], collapse="\", \""), "\"")))
}
} else {
if(isTRUE(bool)){
diff --git a/packages/rkwarddev/man/modifiers.Rd b/packages/rkwarddev/man/modifiers.Rd
new file mode 100644
index 0000000..f47f01a
--- /dev/null
+++ b/packages/rkwarddev/man/modifiers.Rd
@@ -0,0 +1,21 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/modifiers.R
+\name{modifiers}
+\alias{modifiers}
+\title{Get all valid modifiers for a given XML node}
+\usage{
+modifiers(obj = "all")
+}
+\arguments{
+\item{obj}{An object of class \code{XiMpLe.node}, or a character string containing
+the XML node name you're interested in. If set to \code{"all"} returns all defined
+modifiers.}
+}
+\value{
+A character vector of valid modifiers.
+}
+\description{
+In case you want to see which modifiers are definied for a certain XML node,
+just call this helper function.
+}
+
More information about the rkward-tracker
mailing list