[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