[rkward-cvs] SF.net SVN: rkward:[4092] trunk/rkward/packages/rkwarddev

m-eik at users.sourceforge.net m-eik at users.sourceforge.net
Sat Dec 10 21:08:51 UTC 2011


Revision: 4092
          http://rkward.svn.sourceforge.net/rkward/?rev=4092&view=rev
Author:   m-eik
Date:     2011-12-10 21:08:50 +0000 (Sat, 10 Dec 2011)
Log Message:
-----------
rkwarddev: ite() now supports full recursion.

Modified Paths:
--------------
    trunk/rkward/packages/rkwarddev/ChangeLog
    trunk/rkward/packages/rkwarddev/DESCRIPTION
    trunk/rkward/packages/rkwarddev/R/ite.R
    trunk/rkward/packages/rkwarddev/R/rk-internal.R
    trunk/rkward/packages/rkwarddev/R/rk.JS.ite-class.R
    trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R
    trunk/rkward/packages/rkwarddev/inst/CITATION
    trunk/rkward/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
    trunk/rkward/packages/rkwarddev/man/ite.Rd
    trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd

Modified: trunk/rkward/packages/rkwarddev/ChangeLog
===================================================================
--- trunk/rkward/packages/rkwarddev/ChangeLog	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/ChangeLog	2011-12-10 21:08:50 UTC (rev 4092)
@@ -1,5 +1,8 @@
 ChangeLog for package rkwarddev
 
+## 0.04-11 (2011-12-10)
+  - ite() now supports full recursion also for the "thenjs" option.
+
 ## 0.04-10 (2011-12-05)
   - when using rk.comment() for logic scripting, its contents will automatically be placed inside a <script> node now
 

Modified: trunk/rkward/packages/rkwarddev/DESCRIPTION
===================================================================
--- trunk/rkward/packages/rkwarddev/DESCRIPTION	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/DESCRIPTION	2011-12-10 21:08:50 UTC (rev 4092)
@@ -14,8 +14,8 @@
 URL: http://rkward.sourceforge.net
 Authors at R: c(person(given="Meik", family="Michalke",
     email="meik.michalke at hhu.de", role=c("aut", "cre")))
-Version: 0.04-10
-Date: 2011-12-05
+Version: 0.04-11
+Date: 2011-12-10
 Collate:
     'echo.R'
     'id.R'

Modified: trunk/rkward/packages/rkwarddev/R/ite.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/ite.R	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/R/ite.R	2011-12-10 21:08:50 UTC (rev 4092)
@@ -5,7 +5,8 @@
 #' @param thenjs Either a character string, the code to be executed in case the \code{if()} statement is true,
 #'		or an object of class \code{XiMpLe.node}. \code{rk.JS.arr} or \code{rk.JS.opt} (whose identifier will be used).
 #'		The latter is especially useful in combination with \code{\link[rkwarddev:rk.JS.options]{rk.JS.options}}.
-#' @param elsejs A character string, the code to be executed in case the \code{if()} statement is not true.
+#'		You can also give another object of class \code{rk.JS.ite}.
+#' @param elsejs Like \code{thenjs}, the code to be executed in case the \code{if()} statement is not true.
 #' @return An object of class \code{rk.JS.ite}
 #' @include rk.JS.ite-class.R
 #' @seealso \code{\link[rkwarddev:rk.paste.JS]{rk.paste.JS}},
@@ -25,6 +26,12 @@
 
 ite <- function(ifjs, thenjs, elsejs=NULL){
 	#check for recursion
+	if(inherits(thenjs, "rk.JS.ite")){
+		thenifJS <- list(thenjs)
+		thenjs <- ""
+	} else {
+		thenifJS <- list()
+	}
 	if(inherits(elsejs, "rk.JS.ite")){
 		elifJS <- list(elsejs)
 		elsejs <- ""
@@ -37,6 +44,7 @@
 	result <- new("rk.JS.ite",
 		ifJS=id(ifjs, js=TRUE),
 		thenJS=id(thenjs, js=TRUE),
+		thenifJS=thenifJS,
 		elseJS=elsejs,
 		elifJS=elifJS
 	)

Modified: trunk/rkward/packages/rkwarddev/R/rk-internal.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk-internal.R	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/R/rk-internal.R	2011-12-10 21:08:50 UTC (rev 4092)
@@ -539,7 +539,16 @@
 	} else {
 		ifJS <- paste(main.indent, "if(", object at ifJS, ") {\n", sep="")
 	}
-	thenJS <- paste(scnd.indent, object at thenJS, "\n", main.indent, "}", sep="")
+
+	if(nchar(object at thenJS) > 0) {
+		thenJS <- paste(scnd.indent, object at thenJS, "\n", main.indent, "}", sep="")
+	} else {
+		# if there is another rk.JS.ite object, call with recursion
+		if(length(object at thenifJS) == 1){
+			thenJS <- paste(paste.JS.ite(object at thenifJS[[1]], level=level+1, indent.by=indent.by), "\n", main.indent, "}", sep="")
+		} else {}
+	}
+
 	if(nchar(object at elseJS) > 0) {
 		elseJS <- paste(" else {\n", scnd.indent, object at elseJS, "\n", main.indent, "}", sep="")
 	} else {
@@ -551,6 +560,7 @@
 			elseJS <- " else {}"
 		}
 	}
+
 	result <- paste(ifJS, thenJS, elseJS, collapse="", sep="")
 
 	return(result)

Modified: trunk/rkward/packages/rkwarddev/R/rk.JS.ite-class.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rk.JS.ite-class.R	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/R/rk.JS.ite-class.R	2011-12-10 21:08:50 UTC (rev 4092)
@@ -7,18 +7,28 @@
 	representation=representation(
 		ifJS="character",
 		thenJS="character",
+		thenifJS="list",
 		elseJS="character",
 		elifJS="list"
 	),
 	prototype(
 		ifJS=character(),
 		thenJS=character(),
+		thenifJS=list(),
 		elseJS=character(),
 		elifJS=list()
 	)
 )
 
 setValidity("rk.JS.ite", function(object){
+		if(length(object at thenifJS) > 1){
+			stop(simpleError("Slot 'thenifJS' can only have one list element!"))
+		} else {}
+		if(length(object at thenifJS) == 1){
+			if(!inherits(object at thenifJS[[1]], "rk.JS.ite")){
+				stop(simpleError("Slot 'thenifJS' can only have one list element of class 'rk.JS.ite'!"))
+			} else {}
+		} else {}
 		if(length(object at elifJS) > 1){
 			stop(simpleError("Slot 'elifJS' can only have one list element!"))
 		} else {}

Modified: trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R
===================================================================
--- trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/R/rkwarddev-package.R	2011-12-10 21:08:50 UTC (rev 4092)
@@ -3,8 +3,8 @@
 #' \tabular{ll}{
 #' Package: \tab rkwarddev\cr
 #' Type: \tab Package\cr
-#' Version: \tab 0.04-10\cr
-#' Date: \tab 2011-12-05\cr
+#' Version: \tab 0.04-11\cr
+#' Date: \tab 2011-12-10\cr
 #' Depends: \tab R (>= 2.9.0),XiMpLe,rkward (>= 0.5.6)\cr
 #' Enhances: \tab rkward\cr
 #' Encoding: \tab UTF-8\cr

Modified: trunk/rkward/packages/rkwarddev/inst/CITATION
===================================================================
--- trunk/rkward/packages/rkwarddev/inst/CITATION	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/inst/CITATION	2011-12-10 21:08:50 UTC (rev 4092)
@@ -2,12 +2,12 @@
 		title="rkwarddev: A collection of tools for RKWard plugin development",
 		author="Meik Michalke",
 		year="2011",
-		note="(Version 0.04-10)",
+		note="(Version 0.04-11)",
 		url="http://rkward.sourceforge.net",
 
 		textVersion =
 		paste("Michalke, M. (2011). ",
-				"rkwarddev: A collection of tools for RKWard plugin development (Version 0.04-10). ",
+				"rkwarddev: A collection of tools for RKWard plugin development (Version 0.04-11). ",
 				"Available from http://rkward.sourceforge.net",
 				sep=""),
 

Modified: trunk/rkward/packages/rkwarddev/inst/doc/rkwarddev_vignette.pdf
===================================================================
(Binary files differ)

Modified: trunk/rkward/packages/rkwarddev/man/ite.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/ite.Rd	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/man/ite.Rd	2011-12-10 21:08:50 UTC (rev 4092)
@@ -15,9 +15,11 @@
   object of class \code{XiMpLe.node}. \code{rk.JS.arr} or
   \code{rk.JS.opt} (whose identifier will be used).  The
   latter is especially useful in combination with
-  \code{\link[rkwarddev:rk.JS.options]{rk.JS.options}}.}
+  \code{\link[rkwarddev:rk.JS.options]{rk.JS.options}}.
+  You can also give another object of class
+  \code{rk.JS.ite}.}
 
-  \item{elsejs}{A character string, the code to be executed
+  \item{elsejs}{Like \code{thenjs}, the code to be executed
   in case the \code{if()} statement is not true.}
 }
 \value{

Modified: trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd
===================================================================
--- trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd	2011-12-09 20:41:41 UTC (rev 4091)
+++ trunk/rkward/packages/rkwarddev/man/rkwarddev-package.Rd	2011-12-10 21:08:50 UTC (rev 4092)
@@ -11,8 +11,8 @@
 }
 \details{
   \tabular{ll}{ Package: \tab rkwarddev\cr Type: \tab
-  Package\cr Version: \tab 0.04-10\cr Date: \tab
-  2011-12-05\cr Depends: \tab R (>= 2.9.0),XiMpLe,rkward
+  Package\cr Version: \tab 0.04-11\cr Date: \tab
+  2011-12-10\cr Depends: \tab R (>= 2.9.0),XiMpLe,rkward
   (>= 0.5.6)\cr Enhances: \tab rkward\cr Encoding: \tab
   UTF-8\cr License: \tab GPL (>= 3)\cr LazyLoad: \tab
   yes\cr URL: \tab http://rkward.sourceforge.net\cr }

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