[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