[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