[rkward] packages/rkwarddev/R: fixed negation in js()

m.eik michalke meik.michalke at uni-duesseldorf.de
Sat Nov 14 23:43:04 UTC 2015


Git commit 68cb509b4819cda00a6e8b550d65113cdfb84dd2 by m.eik michalke.
Committed on 14/11/2015 at 23:41.
Pushed by meikm into branch 'master'.

fixed negation in js()

  - js() now also accepts if conditions that start with "!"

M  +22   -12   packages/rkwarddev/R/rk-internal.R

http://commits.kde.org/rkward/68cb509b4819cda00a6e8b550d65113cdfb84dd2

diff --git a/packages/rkwarddev/R/rk-internal.R b/packages/rkwarddev/R/rk-internal.R
index d8fc433..85de952 100644
--- a/packages/rkwarddev/R/rk-internal.R
+++ b/packages/rkwarddev/R/rk-internal.R
@@ -1457,6 +1457,10 @@ replaceJSOperators <- function(..., call="id"){
         callList <- unlist(thisItem)
         if(as.character(callList[[1]]) %in% JS.operators){
           result <- list(
+            # the "!" operator needs to come first
+            if(as.character(callList[[1]]) %in% "!"){
+              paste0(as.character(callList[[1]]))
+            } else {},
             if(is.call(callList[[2]])){
               do.call("replaceJSOperators", list(callList[[2]]))
             } else if(is.character(callList[[2]])){
@@ -1468,18 +1472,24 @@ replaceJSOperators <- function(..., call="id"){
             } else {
               do.call(call, list(callList[[2]]))
             },
-            paste0(" ", as.character(callList[[1]]), " "),
-            if(is.call(callList[[3]])){
-              do.call("replaceJSOperators", list(callList[[3]]))
-            } else if(is.character(callList[[3]])){
-              paste0("\"", callList[[3]], "\"")
-            } else if(is.name(callList[[3]])){
-              # same as fetchedObject1 above
-              fetchedObject2 <- dynGet(as.character(callList[[3]]), ifnotfound=get(as.character(callList[[3]])))
-              do.call(call, list(fetchedObject2))
-            } else {
-              do.call(call, list(callList[[3]]))
-            }
+            # all except the "!" operator come here
+            if(!as.character(callList[[1]]) %in% "!"){
+              paste0(" ", as.character(callList[[1]]), " ")
+            } else {},
+            # operators like "!" don't have a third element
+            if(length(callList) > 2){
+              if(is.call(callList[[3]])){
+                do.call("replaceJSOperators", list(callList[[3]]))
+              } else if(is.character(callList[[3]])){
+                paste0("\"", callList[[3]], "\"")
+              } else if(is.name(callList[[3]])){
+                # same as fetchedObject1 above
+                fetchedObject2 <- dynGet(as.character(callList[[3]]), ifnotfound=get(as.character(callList[[3]])))
+                do.call(call, list(fetchedObject2))
+              } else {
+                do.call(call, list(callList[[3]]))
+              }
+            } else {}
           )
           return(paste0(unlist(result), collapse=""))
         } else {



More information about the rkward-tracker mailing list