aboutsummaryrefslogtreecommitdiff
path: root/dialoguer/context_script.r
diff options
context:
space:
mode:
Diffstat (limited to 'dialoguer/context_script.r')
-rw-r--r--dialoguer/context_script.r26
1 files changed, 25 insertions, 1 deletions
diff --git a/dialoguer/context_script.r b/dialoguer/context_script.r
index 8629f2a..712727c 100644
--- a/dialoguer/context_script.r
+++ b/dialoguer/context_script.r
@@ -11,6 +11,8 @@ data_type_vect <- c(
str = 'character',
integer = 'integer',
int = 'integer',
+ double = 'double',
+ float = 'double',
logical = 'logical',
bool = 'logical'
)
@@ -44,6 +46,9 @@ bin_conv <- function(data, data_type_name = NA) {
} else if (is.logical(data) && is.na(data_type_name)) {
conv_data <- as.raw(data)
conv_data <- rawToBits(conv_data)
+ } else if (is.double(data) && is.na(data_type_name)) {
+ conv_data <- as.raw(data)
+ conv_data <- rawToBits(conv_data)
# convert from binary
} else if (is.raw(data) && data_type_name == "character") {
conv_data <- add_missing_bits(data)
@@ -57,6 +62,10 @@ bin_conv <- function(data, data_type_name = NA) {
conv_data <- add_missing_bits(data)
conv_data <- packBits(conv_data, "raw")
conv_data <- as.logical(conv_data)
+ } else if (is.raw(data) && data_type_name == "double") {
+ conv_data <- add_missing_bits(data)
+ conv_data <- packBits(conv_data, "raw")
+ conv_data <- as.double(conv_data)
}
return(conv_data)
}
@@ -122,9 +131,11 @@ import_variable <- function() {
send(con, var_val, TRUE)
}
-evaluate_expression <- function () {
+evaluate_expression <- function() {
arg_count <- recv(con, FALSE, "integer")
send(con, TRUE)
+ kwarg_count <- recv(con, FALSE, "integer")
+ send(con, TRUE)
method_name <- recv(con, FALSE, "character")
send(con, TRUE)
args <- list()
@@ -134,6 +145,19 @@ evaluate_expression <- function () {
send(con, TRUE)
}
}
+ kwargs <- list()
+ if (kwarg_count > 0) {
+ keys <- c()
+ vals <- list()
+ for (i in 1:kwarg_count) {
+ keys <- c(keys, recv(con))
+ send(con, TRUE)
+ vals <- c(vals, recv(con, TRUE))
+ send(con, TRUE)
+ }
+ kwargs <- setNames(vals, keys)
+ }
+ args <- c(args, kwargs)
result <- do.call(method_name, args)
send(con, result, TRUE)
}