Commit 8b9ab95b authored by m.eik michalke's avatar m.eik michalke
Browse files

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
parent 51da09e1
## 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"),
......
# Copyright 2015 Meik Michalke <meik.michalke@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)
}
# Copyright 2010-2014 Meik Michalke <meik.michalke@hhu.de>
# Copyright 2010-2015 Meik Michalke <meik.michalke@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)){
......
% 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.
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment