diff options
author | TinWoodman92 <chrhodgden@gmail.com> | 2023-06-27 21:16:59 -0500 |
---|---|---|
committer | TinWoodman92 <chrhodgden@gmail.com> | 2023-06-27 21:16:59 -0500 |
commit | c38e93fb37510ac091e7862834ba2a0da1c0ab3b (patch) | |
tree | 74605df04cbb52fe54b2d02a1a0a1dffd3df1a4f /dialoguer/context_script.r | |
parent | 53b02ea030d0f8593a007b51e6a5c9c4c2e84e0c (diff) |
added evaluate_expression methods
Diffstat (limited to 'dialoguer/context_script.r')
-rw-r--r-- | dialoguer/context_script.r | 26 |
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) } |