[rkward] packages/rkwarddev: added new functions rk.set.indent()/rk.get.indent()

m.eik michalke meik.michalke at uni-duesseldorf.de
Tue Nov 10 15:17:44 UTC 2015


Git commit fc163a302213355c6afef5ff2f34eb184c0be80c by m.eik michalke.
Committed on 10/11/2015 at 15:18.
Pushed by meikm into branch 'master'.

added new functions rk.set.indent()/rk.get.indent()

  - these new functions control what indentation string should be used in the generated code
  - all functions offering "indent.by" have been updated accordingly

M  +4    -0    packages/rkwarddev/ChangeLog
M  +2    -0    packages/rkwarddev/DESCRIPTION
M  +2    -0    packages/rkwarddev/NAMESPACE
M  +1    -1    packages/rkwarddev/R/R.comment.R
M  +1    -1    packages/rkwarddev/R/js.R
M  +11   -11   packages/rkwarddev/R/rk-internal.R
M  +1    -1    packages/rkwarddev/R/rk.JS.doc.R
M  +2    -2    packages/rkwarddev/R/rk.JS.saveobj.R
M  +1    -1    packages/rkwarddev/R/rk.JS.scan.R
A  +27   -0    packages/rkwarddev/R/rk.get.indent.R
M  +1    -1    packages/rkwarddev/R/rk.paste.JS.R
M  +4    -4    packages/rkwarddev/R/rk.paste.JS.graph.R
M  +1    -1    packages/rkwarddev/R/rk.plotOptions.R
M  +2    -2    packages/rkwarddev/R/rk.plugin.component.R
M  +2    -2    packages/rkwarddev/R/rk.plugin.skeleton.R
A  +36   -0    packages/rkwarddev/R/rk.set.indent.R
M  +1    -1    packages/rkwarddev/R/tf.R
M  +4    -0    packages/rkwarddev/inst/NEWS.Rd
M  +2    -1    packages/rkwarddev/man/R.comment.Rd
M  +1    -1    packages/rkwarddev/man/js.Rd
M  +1    -1    packages/rkwarddev/man/rk.JS.doc.Rd
M  +1    -1    packages/rkwarddev/man/rk.JS.saveobj.Rd
M  +1    -1    packages/rkwarddev/man/rk.JS.scan.Rd
M  +1    -1    packages/rkwarddev/man/rk.paste.JS.Rd
M  +1    -1    packages/rkwarddev/man/rk.paste.JS.graph.Rd
M  +1    -1    packages/rkwarddev/man/rk.plugin.component.Rd
M  +2    -2    packages/rkwarddev/man/rk.plugin.skeleton.Rd
A  +29   -0    packages/rkwarddev/man/rk.set.indent.Rd
M  +1    -1    packages/rkwarddev/man/tf.Rd

http://commits.kde.org/rkward/fc163a302213355c6afef5ff2f34eb184c0be80c

diff --git a/packages/rkwarddev/ChangeLog b/packages/rkwarddev/ChangeLog
index 3b3ba56..be53fe4 100644
--- a/packages/rkwarddev/ChangeLog
+++ b/packages/rkwarddev/ChangeLog
@@ -31,6 +31,8 @@ added:
     sections
   - new function modifiers() to make checking for valid mdifiers of a given
     node easier
+  - new functions rk.get.indent() and rk.set.indent() to globally set indentation
+    string
 changed:
   - improved error handling in rk.JS.header(), error messages are more
     informative now
@@ -38,6 +40,8 @@ changed:
   - updated the vignette with information on js() and how to add help pages
   - internal function modif.validity() now calls modifiers() to give more
     useful feedback
+  - all functions offering "intent.by" as an option now fetch the default value
+    by calling rk.get.indent()
 
 changes in version 0.07-3 (2015-06-29)
 fixed:
diff --git a/packages/rkwarddev/DESCRIPTION b/packages/rkwarddev/DESCRIPTION
index 55f7c8e..ba3fef1 100644
--- a/packages/rkwarddev/DESCRIPTION
+++ b/packages/rkwarddev/DESCRIPTION
@@ -111,6 +111,7 @@ Collate:
     'rk.XML.wizard.R'
     'rk.build.plugin.R'
     'rk.get.comp.R'
+    'rk.get.indent.R'
     'rk.get.rkh.prompter.R'
     'rk.i18n.comment.R'
     'rk.paste.JS.R'
@@ -131,6 +132,7 @@ Collate:
     'rk.rkh.title.R'
     'rk.rkh.usage.R'
     'rk.set.comp.R'
+    'rk.set.indent.R'
     'rk.set.rkh.prompter.R'
     'rk.testsuite.doc.R'
     'rk.uniqueIDs.R'
diff --git a/packages/rkwarddev/NAMESPACE b/packages/rkwarddev/NAMESPACE
index 5d22c04..9bc0d25 100644
--- a/packages/rkwarddev/NAMESPACE
+++ b/packages/rkwarddev/NAMESPACE
@@ -81,6 +81,7 @@ export(rk.XML.wizard)
 export(rk.build.plugin)
 export(rk.comment)
 export(rk.get.comp)
+export(rk.get.indent)
 export(rk.get.rkh.prompter)
 export(rk.i18n.comment)
 export(rk.paste.JS)
@@ -102,6 +103,7 @@ export(rk.rkh.technical)
 export(rk.rkh.title)
 export(rk.rkh.usage)
 export(rk.set.comp)
+export(rk.set.indent)
 export(rk.set.rkh.prompter)
 export(rk.testsuite.doc)
 export(rkwarddev.required)
diff --git a/packages/rkwarddev/R/R.comment.R b/packages/rkwarddev/R/R.comment.R
index 0038e54..4892176 100644
--- a/packages/rkwarddev/R/R.comment.R
+++ b/packages/rkwarddev/R/R.comment.R
@@ -27,7 +27,7 @@
 #' @examples
 #' cat(R.comment("This will become an R comment"))
 
-R.comment <- function(..., indent.by="\\t", level=2, newline=""){
+R.comment <- function(..., indent.by=rk.get.indent(escape=TRUE), level=2, newline=""){
   message <- paste0(list(...), collapse=" ")
   if(level > 1){
     indentation <- paste0(", \"", rep(indent.by, level-1), "\"")
diff --git a/packages/rkwarddev/R/js.R b/packages/rkwarddev/R/js.R
index 5dfe004..97738c2 100644
--- a/packages/rkwarddev/R/js.R
+++ b/packages/rkwarddev/R/js.R
@@ -58,7 +58,7 @@
 #'   }
 #' )))
 
-js <- function(..., level=2, indent.by="\t", linebreaks=FALSE, empty.e=FALSE){
+js <- function(..., level=2, indent.by=rk.get.indent(), linebreaks=FALSE, empty.e=FALSE){
   full.content <- eval(substitute(alist(...)))
 
   if(isTRUE(linebreaks)){
diff --git a/packages/rkwarddev/R/rk-internal.R b/packages/rkwarddev/R/rk-internal.R
index 9b02915..5e16126 100644
--- a/packages/rkwarddev/R/rk-internal.R
+++ b/packages/rkwarddev/R/rk-internal.R
@@ -19,7 +19,7 @@
 #' @include rk.comment.R
 #' @import XiMpLe rkward
 
-# set up an internal environment, e.g. for prompter settings
+# set up an internal environment, e.g. for prompter settings or indentation
 .rkdev.env <- new.env()
 
 # internal functions for the rk.* functions
@@ -106,7 +106,7 @@ trim <- function(char){
 
 ## function indent()
 # will create tabs to format the output
-indent <- function(level, by="\t"){
+indent <- function(level, by=rk.get.indent()){
   paste(rep(by, max(0, level-1)), collapse="")
 } ## end function indent()
 
@@ -679,7 +679,7 @@ modif.validity <- function(source, modifier, ignore.empty=TRUE, warn.only=TRUE,
     if(isTRUE(warn.only)){
       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",
+        "Known modifiers for '", tag.name, "' nodes are:\n  \"", 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)
@@ -814,7 +814,7 @@ clean.name <- function(name, message=TRUE){
 
 
 ## function paste.JS.ite()
-paste.JS.ite <- function(object, level=1, indent.by="\t", recurse=FALSE, empty.e=FALSE){
+paste.JS.ite <- function(object, level=1, indent.by=rk.get.indent(), recurse=FALSE, empty.e=FALSE){
   stopifnot(inherits(object, "rk.JS.ite"))
   # check indentation
   main.indent <- indent(level, by=indent.by)
@@ -864,7 +864,7 @@ paste.JS.ite <- function(object, level=1, indent.by="\t", recurse=FALSE, empty.e
 
 ## function paste.JS.array()
 # opt.sep: the separator that comes *before* the option that is set, in the resulting code
-paste.JS.array <- function(object, level=2, indent.by="\t", funct=NULL, opt.sep=NULL){
+paste.JS.array <- function(object, level=2, indent.by=rk.get.indent(), funct=NULL, opt.sep=NULL){
   stopifnot(inherits(object, "rk.JS.arr"))
   # check indentation
   main.indent <- indent(level, by=indent.by)
@@ -919,7 +919,7 @@ paste.JS.array <- function(object, level=2, indent.by="\t", funct=NULL, opt.sep=
 
 ## function paste.JS.options()
 # opt.sep: the separator that comes *before* the option that is set, in the resulting code
-paste.JS.options <- function(object, level=2, indent.by="\t", array=NULL, funct=NULL, opt.sep=NULL){
+paste.JS.options <- function(object, level=2, indent.by=rk.get.indent(), array=NULL, funct=NULL, opt.sep=NULL){
   stopifnot(inherits(object, "rk.JS.opt"))
   # check indentation
   main.indent <- indent(level, by=indent.by)
@@ -1018,7 +1018,7 @@ paste.JS.options <- function(object, level=2, indent.by="\t", array=NULL, funct=
 #   important for "checkbox", which has "state" as default modifier, but using the checkbox object will not
 #   notice this. works only for the first modifier given.
 # var: if FALSE, the variable is assumed to be already defined (globally?) and "var " will be omitted
-paste.JS.var <- function(object, level=2, indent.by="\t", JS.prefix=NULL, modifiers=NULL, default=NULL, append.modifier=NULL,
+paste.JS.var <- function(object, level=2, indent.by=rk.get.indent(), JS.prefix=NULL, modifiers=NULL, default=NULL, append.modifier=NULL,
   join=NULL, getter=NULL, names.only=FALSE, check.modifiers=FALSE, var=TRUE){
   # paste several objects
   results <- unlist(sapply(slot(object, "vars"), function(this.obj){
@@ -1119,7 +1119,7 @@ paste.JS.var <- function(object, level=2, indent.by="\t", JS.prefix=NULL, modifi
 
 
 ## function paste.JS.optionsset()
-paste.JS.optionsset <- function(object, level=2, indent.by="\t"){
+paste.JS.optionsset <- function(object, level=2, indent.by=rk.get.indent()){
   stopifnot(inherits(object, "rk.JS.oset"))
   # check indentation
   main.indent <- indent(level, by=indent.by)
@@ -1509,7 +1509,7 @@ replaceJSOperators <- function(..., call="id"){
 ## function uncurl()
 # used by js() to fetch calls from then/else segments of if conditions,
 # omitting curly brackets that would get in the way with ite()
-uncurl <- function(cond, level=1, indent.by="\t"){
+uncurl <- function(cond, level=1, indent.by=rk.get.indent()){
   if(!is.null(cond)){
     cond.list <- as.list(cond)
     # first check for the bracket
@@ -1537,7 +1537,7 @@ uncurl <- function(cond, level=1, indent.by="\t"){
 
 
 ## function replaceJSIf
-replaceJSIf <- function(cond, level=1, paste=TRUE, indent.by="\t", empty.e=FALSE){
+replaceJSIf <- function(cond, level=1, paste=TRUE, indent.by=rk.get.indent(), empty.e=FALSE){
   if(inherits(cond, "if")){
     # if condition -- should be save to give to js()
     cond.if   <- do.call(
@@ -1625,7 +1625,7 @@ replaceJSIf <- function(cond, level=1, paste=TRUE, indent.by="\t", empty.e=FALSE
 #   }
 # )))
 #</documentation> 
-replaceJSFor <- function(loop, level=1, indent.by="\t"){
+replaceJSFor <- function(loop, level=1, indent.by=rk.get.indent()){
   if(inherits(loop, "for")){
     # for loops must be handled differently, we need to create an array
     # first and then interate through the array to imitate ho R does this
diff --git a/packages/rkwarddev/R/rk.JS.doc.R b/packages/rkwarddev/R/rk.JS.doc.R
index 127d580..3141d4a 100644
--- a/packages/rkwarddev/R/rk.JS.doc.R
+++ b/packages/rkwarddev/R/rk.JS.doc.R
@@ -59,7 +59,7 @@
 #' @export
 
 rk.JS.doc <- function(require=c(), variables=NULL, globals=NULL, results.header=NULL, header.add=list(),
-  preprocess=NULL, calculate=NULL, printout=NULL, doPrintout=NULL, load.silencer=NULL, gen.info=TRUE, indent.by="\t",
+  preprocess=NULL, calculate=NULL, printout=NULL, doPrintout=NULL, load.silencer=NULL, gen.info=TRUE, indent.by=rk.get.indent(),
   guess.getter=FALSE){
   # variable to determine whether to add setGlobalVars() to preprocess() later
   addSetGlobalVars <- FALSE
diff --git a/packages/rkwarddev/R/rk.JS.saveobj.R b/packages/rkwarddev/R/rk.JS.saveobj.R
index 2a1f63b..09e1def 100644
--- a/packages/rkwarddev/R/rk.JS.saveobj.R
+++ b/packages/rkwarddev/R/rk.JS.saveobj.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.
 #
@@ -31,7 +31,7 @@
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @export
 
-rk.JS.saveobj <- function(pXML, R.objects="initial", vars=TRUE, add.abbrev=FALSE, indent.by="\t"){
+rk.JS.saveobj <- function(pXML, R.objects="initial", vars=TRUE, add.abbrev=FALSE, indent.by=rk.get.indent()){
 
   single.tags <- get.single.tags(XML.obj=pXML, drop=c("comments","cdata", "declarations", "doctype"))
 
diff --git a/packages/rkwarddev/R/rk.JS.scan.R b/packages/rkwarddev/R/rk.JS.scan.R
index 41e1efa..157d16f 100644
--- a/packages/rkwarddev/R/rk.JS.scan.R
+++ b/packages/rkwarddev/R/rk.JS.scan.R
@@ -32,7 +32,7 @@
 #' @seealso \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @export
 
-rk.JS.scan <- function(pXML, js=TRUE, add.abbrev=FALSE, guess.getter=FALSE, indent.by="\t"){
+rk.JS.scan <- function(pXML, js=TRUE, add.abbrev=FALSE, guess.getter=FALSE, indent.by=rk.get.indent()){
 
   # these are tags to scan normally, no special treatment
   JS.relevant.tags.default <- c("browser", "dropdown", "input", "matrix", "optioncolumn",
diff --git a/packages/rkwarddev/R/rk.get.indent.R b/packages/rkwarddev/R/rk.get.indent.R
new file mode 100644
index 0000000..00db075
--- /dev/null
+++ b/packages/rkwarddev/R/rk.get.indent.R
@@ -0,0 +1,27 @@
+# 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/>.
+
+#' @rdname rk.set.indent
+#' @param escape Logical, if set to \code{TRUE} each occurring "\t" will be escaped by an additional "\".
+#' @export
+rk.get.indent <- function(escape=FALSE){
+  indent.by <- get.rk.env("indent.by", value="\t")
+  if(isTRUE(escape)){
+    indent.by <- gsub("\t", "\\\\t", indent.by)
+  } else {}
+  return(indent.by)
+}
diff --git a/packages/rkwarddev/R/rk.paste.JS.R b/packages/rkwarddev/R/rk.paste.JS.R
index 8f35443..616c9ee 100644
--- a/packages/rkwarddev/R/rk.paste.JS.R
+++ b/packages/rkwarddev/R/rk.paste.JS.R
@@ -64,7 +64,7 @@
 #'    and the \href{help:rkwardplugins}{Introduction to Writing Plugins for RKWard}
 #' @export
 
-rk.paste.JS <- function(..., level=2, indent.by="\t", funct=NULL, array=NULL,
+rk.paste.JS <- function(..., level=2, indent.by=rk.get.indent(), funct=NULL, array=NULL,
   var.prefix=NULL, modifiers=NULL, default=NULL, join=NULL, getter=NULL, var=TRUE, empty.e=FALSE,
   opt.sep=NULL){
   stopifnot(level > 0)
diff --git a/packages/rkwarddev/R/rk.paste.JS.graph.R b/packages/rkwarddev/R/rk.paste.JS.graph.R
index c744bcc..48a4d78 100644
--- a/packages/rkwarddev/R/rk.paste.JS.graph.R
+++ b/packages/rkwarddev/R/rk.paste.JS.graph.R
@@ -55,9 +55,9 @@
 #'  plotOpts=tmp.plot.options)
 #'
 #' cat(js.prnt)
-rk.paste.JS.graph <- function(..., plotOpts=NULL, printoutObj=NULL, level=2, indent.by="\t", empty.e=FALSE){
+rk.paste.JS.graph <- function(..., plotOpts=NULL, printoutObj=NULL, level=2, indent.by=rk.get.indent(), empty.e=FALSE){
 
-  plotOptsIndent <- paste(rep("\\t", level), collapse="")
+  plotOptsIndent <- paste(rep(rk.get.indent(escape=TRUE), level), collapse="")
 
   # define variables
   js.prnt <- rk.paste.JS(
@@ -90,7 +90,7 @@ rk.paste.JS.graph <- function(..., plotOpts=NULL, printoutObj=NULL, level=2, ind
   # graph.on() & begin try()
   js.prnt <- paste(js.prnt, rk.paste.JS(
     ite("full", echo("rk.graph.on()\n")),
-    echo("\ttry({\n"),
+    echo(paste0(indent(level=level, by=indent.by), "try({\n")),
     level=level, indent.by=indent.by, empty.e=empty.e
   ), sep="\n\n")
 
@@ -133,7 +133,7 @@ rk.paste.JS.graph <- function(..., plotOpts=NULL, printoutObj=NULL, level=2, ind
 
   # end try() & graph.off()
   js.prnt <- paste(js.prnt, rk.paste.JS(
-    echo("\n\t})\n"),
+    echo(paste0("\n",indent(level=level, by=indent.by),"})\n")),
     ite("full", echo("rk.graph.off()\n")),
     level=level, indent.by=indent.by, empty.e=empty.e
   ), sep="\n\n")
diff --git a/packages/rkwarddev/R/rk.plotOptions.R b/packages/rkwarddev/R/rk.plotOptions.R
index c820ffd..08f011e 100644
--- a/packages/rkwarddev/R/rk.plotOptions.R
+++ b/packages/rkwarddev/R/rk.plotOptions.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.
 #
diff --git a/packages/rkwarddev/R/rk.plugin.component.R b/packages/rkwarddev/R/rk.plugin.component.R
index 309fd57..b7ed9be 100644
--- a/packages/rkwarddev/R/rk.plugin.component.R
+++ b/packages/rkwarddev/R/rk.plugin.component.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.
 #
@@ -92,7 +92,7 @@
 rk.plugin.component <- function(about, xml=list(), js=list(), rkh=list(),
   provides=c("logic", "dialog"), scan=c("var", "saveobj", "settings"), guess.getter=FALSE,
   hierarchy="test", include=NULL, create=c("xml", "js", "rkh"), dependencies=NULL,
-  hints=TRUE, gen.info=TRUE, indent.by="\t"){
+  hints=TRUE, gen.info=TRUE, indent.by=rk.get.indent()){
 
   if(is.XiMpLe.node(about)){
     # check about and dependencies
diff --git a/packages/rkwarddev/R/rk.plugin.skeleton.R b/packages/rkwarddev/R/rk.plugin.skeleton.R
index e462306..75c56f8 100644
--- a/packages/rkwarddev/R/rk.plugin.skeleton.R
+++ b/packages/rkwarddev/R/rk.plugin.skeleton.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.
 #
@@ -166,7 +166,7 @@ rk.plugin.skeleton <- function(about, path=tempdir(),
   overwrite=FALSE, tests=TRUE, lazyLoad=TRUE,
   create=c("pmap", "xml", "js", "rkh", "desc", "clog"), suggest.required=TRUE,
   components=list(), dependencies=NULL, edit=FALSE, load=FALSE, show=FALSE, gen.info=TRUE,
-  hints=TRUE, indent.by="\t", internal=FALSE){
+  hints=TRUE, indent.by=rk.get.indent(), internal=FALSE){
 
   if(is.XiMpLe.node(about)){
     # check about and dependencies
diff --git a/packages/rkwarddev/R/rk.set.indent.R b/packages/rkwarddev/R/rk.set.indent.R
new file mode 100644
index 0000000..e5843d4
--- /dev/null
+++ b/packages/rkwarddev/R/rk.set.indent.R
@@ -0,0 +1,36 @@
+# 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/>.
+
+#' Globally define the indentation string
+#' 
+#' Many functions allow to manually set the indentation string that should be used
+#' for code formatting. The default string used can be globally defined with \code{rk.set.indent},
+#' so you don't have to specify it in each function call.
+#' 
+#' \code{rk.get.indent} returns the set value, which defaults to a tab character by default.
+#' 
+#' @param by Character string, indentation string to be defined globally.
+#' @return \code{rk.set.indent} returns invisible(NULL), \code{rk.get.indent} a character string.
+#' @rdname rk.set.indent
+#' @export
+
+rk.set.indent <- function(by="\t"){
+  indent.by <- rk.get.indent()
+  indent.by <- by
+  set.rk.env("indent.by", value=indent.by)
+  return(invisible(NULL))
+}
diff --git a/packages/rkwarddev/R/tf.R b/packages/rkwarddev/R/tf.R
index 37a539e..491cb78 100644
--- a/packages/rkwarddev/R/tf.R
+++ b/packages/rkwarddev/R/tf.R
@@ -53,7 +53,7 @@
 #' cbox1 <- rk.XML.cbox(label="foo", value="foo1", id.name="foo_option")
 #' tf(cbox1)
 
-tf <- function(cbox, true=TRUE, not=FALSE, ifelse=FALSE, false=FALSE, opt=NULL, prefix=",\n", level=3, indent.by="\t"){
+tf <- function(cbox, true=TRUE, not=FALSE, ifelse=FALSE, false=FALSE, opt=NULL, prefix=",\n", level=3, indent.by=rk.get.indent()){
 
   # check if we're given a checkbox, alright...
   valid.parent(parent="checkbox", node=cbox, warn=FALSE, see="rk.XML.cbox", arg.name="cbox")
diff --git a/packages/rkwarddev/inst/NEWS.Rd b/packages/rkwarddev/inst/NEWS.Rd
index a139710..68abe89 100644
--- a/packages/rkwarddev/inst/NEWS.Rd
+++ b/packages/rkwarddev/inst/NEWS.Rd
@@ -39,6 +39,8 @@
         sections
       \item new function \code{modifiers()} to make checking for valid mdifiers of a given
         node easier
+      \item new functions \code{rk.get.indent()} and \code{rk.set.indent()} to globally set indentation
+        string
     }
   }
   \subsection{changed}{
@@ -49,6 +51,8 @@
       \item updated the vignette with information on \code{js()} and how to add help pages
       \item internal function \code{modif.validity()} now calls \code{modifiers()} to give more
         useful feedback
+      \item all functions offering \code{"intent.by"} as an option now fetch the default value
+        by calling \code{rk.get.indent()}
     }
   }
 }
diff --git a/packages/rkwarddev/man/R.comment.Rd b/packages/rkwarddev/man/R.comment.Rd
index c2574ad..f211942 100644
--- a/packages/rkwarddev/man/R.comment.Rd
+++ b/packages/rkwarddev/man/R.comment.Rd
@@ -4,7 +4,8 @@
 \alias{R.comment}
 \title{Create R comment with JavaScript in RKWard plugin code}
 \usage{
-R.comment(..., indent.by = "\\\\t", level = 2, newline = "")
+R.comment(..., indent.by = rk.get.indent(escape = TRUE), level = 2,
+  newline = "")
 }
 \arguments{
 \item{...}{Character strings to form a comment.}
diff --git a/packages/rkwarddev/man/js.Rd b/packages/rkwarddev/man/js.Rd
index 5cf76cd..3301fbf 100644
--- a/packages/rkwarddev/man/js.Rd
+++ b/packages/rkwarddev/man/js.Rd
@@ -4,7 +4,7 @@
 \alias{js}
 \title{R to JavaScript translation}
 \usage{
-js(..., level = 2, indent.by = "\\t", linebreaks = FALSE,
+js(..., level = 2, indent.by = rk.get.indent(), linebreaks = FALSE,
   empty.e = FALSE)
 }
 \arguments{
diff --git a/packages/rkwarddev/man/rk.JS.doc.Rd b/packages/rkwarddev/man/rk.JS.doc.Rd
index 06651b9..b741f29 100644
--- a/packages/rkwarddev/man/rk.JS.doc.Rd
+++ b/packages/rkwarddev/man/rk.JS.doc.Rd
@@ -7,7 +7,7 @@
 rk.JS.doc(require = c(), variables = NULL, globals = NULL,
   results.header = NULL, header.add = list(), preprocess = NULL,
   calculate = NULL, printout = NULL, doPrintout = NULL,
-  load.silencer = NULL, gen.info = TRUE, indent.by = "\\t",
+  load.silencer = NULL, gen.info = TRUE, indent.by = rk.get.indent(),
   guess.getter = FALSE)
 }
 \arguments{
diff --git a/packages/rkwarddev/man/rk.JS.saveobj.Rd b/packages/rkwarddev/man/rk.JS.saveobj.Rd
index 74976e6..038f2d7 100644
--- a/packages/rkwarddev/man/rk.JS.saveobj.Rd
+++ b/packages/rkwarddev/man/rk.JS.saveobj.Rd
@@ -5,7 +5,7 @@
 \title{Create JavaScript saveobject code from plugin XML}
 \usage{
 rk.JS.saveobj(pXML, R.objects = "initial", vars = TRUE,
-  add.abbrev = FALSE, indent.by = "\\t")
+  add.abbrev = FALSE, indent.by = rk.get.indent())
 }
 \arguments{
 \item{pXML}{Either an object of class \code{XiMpLe.doc} or \code{XiMpLe.node},
diff --git a/packages/rkwarddev/man/rk.JS.scan.Rd b/packages/rkwarddev/man/rk.JS.scan.Rd
index 89b576f..f59a471 100644
--- a/packages/rkwarddev/man/rk.JS.scan.Rd
+++ b/packages/rkwarddev/man/rk.JS.scan.Rd
@@ -5,7 +5,7 @@
 \title{Create JavaScript variables from plugin XML}
 \usage{
 rk.JS.scan(pXML, js = TRUE, add.abbrev = FALSE, guess.getter = FALSE,
-  indent.by = "\\t")
+  indent.by = rk.get.indent())
 }
 \arguments{
 \item{pXML}{Either an object of class \code{XiMpLe.doc} or \code{XiMpLe.node},
diff --git a/packages/rkwarddev/man/rk.paste.JS.Rd b/packages/rkwarddev/man/rk.paste.JS.Rd
index 6723881..63c1a8b 100644
--- a/packages/rkwarddev/man/rk.paste.JS.Rd
+++ b/packages/rkwarddev/man/rk.paste.JS.Rd
@@ -4,7 +4,7 @@
 \alias{rk.paste.JS}
 \title{Paste JavaScript objects and character strings}
 \usage{
-rk.paste.JS(..., level = 2, indent.by = "\\t", funct = NULL,
+rk.paste.JS(..., level = 2, indent.by = rk.get.indent(), funct = NULL,
   array = NULL, var.prefix = NULL, modifiers = NULL, default = NULL,
   join = NULL, getter = NULL, var = TRUE, empty.e = FALSE,
   opt.sep = NULL)
diff --git a/packages/rkwarddev/man/rk.paste.JS.graph.Rd b/packages/rkwarddev/man/rk.paste.JS.graph.Rd
index 4815fe0..5265532 100644
--- a/packages/rkwarddev/man/rk.paste.JS.graph.Rd
+++ b/packages/rkwarddev/man/rk.paste.JS.graph.Rd
@@ -5,7 +5,7 @@
 \title{Paste simple JavaScript plot code}
 \usage{
 rk.paste.JS.graph(..., plotOpts = NULL, printoutObj = NULL, level = 2,
-  indent.by = "\\t", empty.e = FALSE)
+  indent.by = rk.get.indent(), empty.e = FALSE)
 }
 \arguments{
 \item{...}{The actual plot code, passed through to \code{rk.paste.JS}.}
diff --git a/packages/rkwarddev/man/rk.plugin.component.Rd b/packages/rkwarddev/man/rk.plugin.component.Rd
index 8d53102..a981ab4 100644
--- a/packages/rkwarddev/man/rk.plugin.component.Rd
+++ b/packages/rkwarddev/man/rk.plugin.component.Rd
@@ -8,7 +8,7 @@ rk.plugin.component(about, xml = list(), js = list(), rkh = list(),
   provides = c("logic", "dialog"), scan = c("var", "saveobj", "settings"),
   guess.getter = FALSE, hierarchy = "test", include = NULL,
   create = c("xml", "js", "rkh"), dependencies = NULL, hints = TRUE,
-  gen.info = TRUE, indent.by = "\\t")
+  gen.info = TRUE, indent.by = rk.get.indent())
 }
 \arguments{
 \item{about}{Either a character string with the name of this plugin component,
diff --git a/packages/rkwarddev/man/rk.plugin.skeleton.Rd b/packages/rkwarddev/man/rk.plugin.skeleton.Rd
index 811b7a6..b22f23d 100644
--- a/packages/rkwarddev/man/rk.plugin.skeleton.Rd
+++ b/packages/rkwarddev/man/rk.plugin.skeleton.Rd
@@ -10,8 +10,8 @@ rk.plugin.skeleton(about, path = tempdir(), provides = c("logic", "dialog"),
   overwrite = FALSE, tests = TRUE, lazyLoad = TRUE, create = c("pmap",
   "xml", "js", "rkh", "desc", "clog"), suggest.required = TRUE,
   components = list(), dependencies = NULL, edit = FALSE, load = FALSE,
-  show = FALSE, gen.info = TRUE, hints = TRUE, indent.by = "\\t",
-  internal = FALSE)
+  show = FALSE, gen.info = TRUE, hints = TRUE,
+  indent.by = rk.get.indent(), internal = FALSE)
 }
 \arguments{
 \item{about}{Either an object of class \code{XiMpLe.node} with descriptive information on the plugin and its authors
diff --git a/packages/rkwarddev/man/rk.set.indent.Rd b/packages/rkwarddev/man/rk.set.indent.Rd
new file mode 100644
index 0000000..c362c60
--- /dev/null
+++ b/packages/rkwarddev/man/rk.set.indent.Rd
@@ -0,0 +1,29 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/rk.get.indent.R, R/rk.set.indent.R
+\name{rk.get.indent}
+\alias{rk.get.indent}
+\alias{rk.set.indent}
+\title{Globally define the indentation string}
+\usage{
+rk.get.indent(escape = FALSE)
+
+rk.set.indent(by = "\\t")
+}
+\arguments{
+\item{escape}{Logical,
+      if set to \code{TRUE} each occurring "\t" will be escaped by an additional "\".}
+
+\item{by}{Character string, indentation string to be defined globally.}
+}
+\value{
+\code{rk.set.indent} returns invisible(NULL), \code{rk.get.indent} a character string.
+}
+\description{
+Many functions allow to manually set the indentation string that should be used
+for code formatting. The default string used can be globally defined with \code{rk.set.indent},
+so you don't have to specify it in each function call.
+}
+\details{
+\code{rk.get.indent} returns the set value, which defaults to a tab character by default.
+}
+
diff --git a/packages/rkwarddev/man/tf.Rd b/packages/rkwarddev/man/tf.Rd
index 63b2217..29a6b99 100644
--- a/packages/rkwarddev/man/tf.Rd
+++ b/packages/rkwarddev/man/tf.Rd
@@ -5,7 +5,7 @@
 \title{Replace checkbox XML objects with JavaScript code}
 \usage{
 tf(cbox, true = TRUE, not = FALSE, ifelse = FALSE, false = FALSE,
-  opt = NULL, prefix = ",\\n", level = 3, indent.by = "\\t")
+  opt = NULL, prefix = ",\\n", level = 3, indent.by = rk.get.indent())
 }
 \arguments{
 \item{cbox}{An object of class \code{XiMpLe.node} containing a \code{<checkbox>} node,



More information about the rkward-tracker mailing list