From 2a1abc25750ea14c2c25a18f903938b9e24c2233 Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Sun, 25 Jun 2023 22:03:15 -0500 Subject: Updated conversion from integer to binary. --- dialoguer/binary_conversion.py | 1 + 1 file changed, 1 insertion(+) (limited to 'dialoguer') diff --git a/dialoguer/binary_conversion.py b/dialoguer/binary_conversion.py index a354851..9bdef6c 100644 --- a/dialoguer/binary_conversion.py +++ b/dialoguer/binary_conversion.py @@ -26,6 +26,7 @@ def bin_conv(data, data_type = None): conv_data = bin(data) conv_data = conv_data.lstrip('0b') conv_data = conv_data.zfill(8) + conv_data = ''.join(reversed(conv_data)) n = b'' for b in conv_data: m = int(b) -- cgit v1.2.3 From d946a82861a4991739e7dd3a493e8a9a82da60b9 Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Sun, 25 Jun 2023 22:04:14 -0500 Subject: added command handling. --- dialoguer/__init__.py | 7 +++++-- dialoguer/context_script.r | 29 +++++++++++++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) (limited to 'dialoguer') diff --git a/dialoguer/__init__.py b/dialoguer/__init__.py index bf1e978..7b05a5f 100644 --- a/dialoguer/__init__.py +++ b/dialoguer/__init__.py @@ -89,15 +89,18 @@ class Dialogue: return data def import_variable(self, var_name): + self.send(1) + recv_chk = self.recv(set_data_type=bool) self.send(var_name, False) val = self.recv(True) return val - def evaluate_expression(self, expr): + def evaluate_expression(self, method_name, *args): + self.send(2) pass def close(self): - self.send('!DISCONNECT') + self.send(0) self._launch.join() self.conn.close() self.conn = None diff --git a/dialoguer/context_script.r b/dialoguer/context_script.r index 9d4a4d1..1d59dd8 100644 --- a/dialoguer/context_script.r +++ b/dialoguer/context_script.r @@ -116,6 +116,16 @@ find_connection <- function() { return(con) } +import_variable <- function() { + var_name <- recv(con, FALSE, "character") + var_val <- get(var_name) + send(con, var_val, TRUE) +} + +evaluate_expression <- function () { + +} + con <- find_connection() #load target file @@ -123,16 +133,15 @@ source(TARGET_FILE) send(con, TRUE) -msg <- '' -while (msg != '!DISCONNECT') { - # there should be several handeling methods - # returning variables - # evaluating expressions - msg <- recv(con, FALSE, "character") - if (msg != '!DISCONNECT') { - val <- get(msg) - display_msg(msg, val) - send(con, val, TRUE) +cmd_int <- -1 +while (cmd_int != 0) { + cmd_int <- recv(con, FALSE, "integer") + if (cmd_int == 1){ + send(con, TRUE) + import_variable() + } else if (cmd_int == 2) { + send(con, TRUE) + evaluate_expression() } } -- cgit v1.2.3 From c0c32a7d2b9d0740521fed51dceff79b68d68f0a Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Mon, 26 Jun 2023 13:11:12 -0500 Subject: Update __init__.py rough build of evaluate_expression method --- dialoguer/__init__.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'dialoguer') diff --git a/dialoguer/__init__.py b/dialoguer/__init__.py index 7b05a5f..5c4b3da 100644 --- a/dialoguer/__init__.py +++ b/dialoguer/__init__.py @@ -95,9 +95,30 @@ class Dialogue: val = self.recv(True) return val - def evaluate_expression(self, method_name, *args): + def evaluate_expression(self, method_name, *args, **kwargs): self.send(2) - pass + recv_chk = self.recv(set_data_type=bool) + #send number of arguments + self.send(len(args)) + recv_chk = self.recv(set_data_type=bool) + #send number of keyword arguments + self.send(len(kwargs) + recv_chk = self.recv(set_data_type=bool) + #send method name + self.send(method_name) + recv_chk = self.recv(set_data_type=bool) + #send arguments + for arg in args: + self.send(arg, True) + recv_chk = self.recv(set_data_type=bool) + #send keyword arguments + for kwarg in kwargs: + #k = key(kwarg) + #self.send(k) + #recv_chk = self.recv(set_data_type=bool) + #v = val(kwarg) + #self.send(v, True) + #recv_chk = self.recv(set_data_type=bool) def close(self): self.send(0) -- cgit v1.2.3 From 18a0fcd67b61c6beadd14ef1e57c3e05a35b7270 Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Mon, 26 Jun 2023 17:14:41 -0500 Subject: added evaluate_expression handling with argss --- dialoguer/__init__.py | 8 ++++++-- dialoguer/context_script.r | 14 +++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'dialoguer') diff --git a/dialoguer/__init__.py b/dialoguer/__init__.py index 5c4b3da..367e14b 100644 --- a/dialoguer/__init__.py +++ b/dialoguer/__init__.py @@ -102,8 +102,8 @@ class Dialogue: self.send(len(args)) recv_chk = self.recv(set_data_type=bool) #send number of keyword arguments - self.send(len(kwargs) - recv_chk = self.recv(set_data_type=bool) + # self.send(len(kwargs)) + # recv_chk = self.recv(set_data_type=bool) #send method name self.send(method_name) recv_chk = self.recv(set_data_type=bool) @@ -119,6 +119,10 @@ class Dialogue: #v = val(kwarg) #self.send(v, True) #recv_chk = self.recv(set_data_type=bool) + pass + result = self.recv(True) + return result + def close(self): self.send(0) diff --git a/dialoguer/context_script.r b/dialoguer/context_script.r index 1d59dd8..8629f2a 100644 --- a/dialoguer/context_script.r +++ b/dialoguer/context_script.r @@ -123,7 +123,19 @@ import_variable <- function() { } evaluate_expression <- function () { - + arg_count <- recv(con, FALSE, "integer") + send(con, TRUE) + method_name <- recv(con, FALSE, "character") + send(con, TRUE) + args <- list() + if (arg_count > 0) { + for (i in 1:arg_count) { + args <- c(args, recv(con, TRUE)) + send(con, TRUE) + } + } + result <- do.call(method_name, args) + send(con, result, TRUE) } con <- find_connection() -- cgit v1.2.3 From 53b02ea030d0f8593a007b51e6a5c9c4c2e84e0c Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Tue, 27 Jun 2023 21:16:04 -0500 Subject: added float --- dialoguer/data_type_ref.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'dialoguer') diff --git a/dialoguer/data_type_ref.py b/dialoguer/data_type_ref.py index 6d45ba5..0559881 100644 --- a/dialoguer/data_type_ref.py +++ b/dialoguer/data_type_ref.py @@ -3,6 +3,8 @@ data_type_dict = { 'character': str, 'int': int, 'integer': int, + 'float': float, + 'double': float, 'bool': bool, 'logical': bool, 'NoneType': type(None), -- cgit v1.2.3 From c38e93fb37510ac091e7862834ba2a0da1c0ab3b Mon Sep 17 00:00:00 2001 From: TinWoodman92 Date: Tue, 27 Jun 2023 21:16:59 -0500 Subject: added evaluate_expression methods --- dialoguer/__init__.py | 17 +++++++---------- dialoguer/context_script.r | 26 +++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 11 deletions(-) (limited to 'dialoguer') diff --git a/dialoguer/__init__.py b/dialoguer/__init__.py index 367e14b..476cde0 100644 --- a/dialoguer/__init__.py +++ b/dialoguer/__init__.py @@ -102,8 +102,8 @@ class Dialogue: self.send(len(args)) recv_chk = self.recv(set_data_type=bool) #send number of keyword arguments - # self.send(len(kwargs)) - # recv_chk = self.recv(set_data_type=bool) + self.send(len(kwargs)) + recv_chk = self.recv(set_data_type=bool) #send method name self.send(method_name) recv_chk = self.recv(set_data_type=bool) @@ -112,14 +112,11 @@ class Dialogue: self.send(arg, True) recv_chk = self.recv(set_data_type=bool) #send keyword arguments - for kwarg in kwargs: - #k = key(kwarg) - #self.send(k) - #recv_chk = self.recv(set_data_type=bool) - #v = val(kwarg) - #self.send(v, True) - #recv_chk = self.recv(set_data_type=bool) - pass + for kw in kwargs: + self.send(kw) + recv_chk = self.recv(set_data_type=bool) + self.send(kwargs[kw], True) + recv_chk = self.recv(set_data_type=bool) result = self.recv(True) return result 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) } -- cgit v1.2.3