aboutsummaryrefslogtreecommitdiff
path: root/dialoguer/dialoguer.r
diff options
context:
space:
mode:
Diffstat (limited to 'dialoguer/dialoguer.r')
-rw-r--r--dialoguer/dialoguer.r146
1 files changed, 78 insertions, 68 deletions
diff --git a/dialoguer/dialoguer.r b/dialoguer/dialoguer.r
index 32a0149..dbfa8e0 100644
--- a/dialoguer/dialoguer.r
+++ b/dialoguer/dialoguer.r
@@ -1,12 +1,10 @@
-HEADER <- 2048
-PORT <- 6011
-SERVER <- "localhost"
-FORMAT <- "utf-8"
-DISCONNECT_MESSAGE <- "!DISSCONNECT"
-UUID <- commandArgs(trailingOnly = TRUE)[1]
-TARGET_FILE <- commandArgs(trailingOnly = TRUE)[2]
-
-data_type_vect <- c(
+dialoguer.HEADER <- 2048
+dialoguer.PORT <- 6011
+dialoguer.SERVER <- "localhost"
+dialoguer.UUID <- commandArgs(trailingOnly = TRUE)[1]
+dialoguer.TARGET_FILE <- commandArgs(trailingOnly = TRUE)[2]
+
+dialoguer.data_type_vect <- c(
character = "character",
str = "character",
integer = "integer",
@@ -17,7 +15,7 @@ data_type_vect <- c(
bool = "logical"
)
-display_msg <- function(...) {
+dialoguer.display_msg <- function(...) {
cat("\033[94m")
cat(
...,
@@ -26,33 +24,33 @@ display_msg <- function(...) {
}
# may not need to pass connection if it will only be 1 per dialogue
-send <- function(conn, data, send_data_type = FALSE) {
+dialoguer.send <- function(conn, data, send_data_type = FALSE) {
if (send_data_type) {
data_type_name <- typeof(data)
writeBin(data_type_name, conn)
- recv_chk <- recv(conn, set_data_type = 'logical')
+ recv_chk <- dialoguer.recv(conn, set_data_type = 'logical')
}
writeBin(data, conn)
}
# may not need to pass connection if it will only be 1 per dialogue
# I still want to consolidate the recv_data_type and set_data_type args
-recv <- function(conn, recv_data_type = FALSE, set_data_type = "character") {
+dialoguer.recv <- function(conn, recv_data_type = FALSE, set_data_type = "character") {
if (recv_data_type) {
- suppressWarnings(data_type <- readBin(conn, "raw", HEADER))
+ suppressWarnings(data_type <- readBin(conn, "raw", dialoguer.HEADER))
while (length(data_type) == 0) {
- suppressWarnings(data_type <- readBin(conn, "raw", HEADER))
+ suppressWarnings(data_type <- readBin(conn, "raw", dialoguer.HEADER))
}
data_type <- readBin(data_type, "character")
- data_type <- data_type_vect[data_type]
- send(con, TRUE)
+ data_type <- dialoguer.data_type_vect[data_type]
+ dialoguer.send(conn, TRUE)
} else {
data_type <- set_data_type
}
- suppressWarnings(data <- readBin(conn, "raw", HEADER))
+ suppressWarnings(data <- readBin(conn, "raw", dialoguer.HEADER))
while (length(data) == 0) {
- suppressWarnings(data <- readBin(conn, "raw", HEADER))
+ suppressWarnings(data <- readBin(conn, "raw", dialoguer.HEADER))
}
data <- readBin(data, data_type)
@@ -60,52 +58,52 @@ recv <- function(conn, recv_data_type = FALSE, set_data_type = "character") {
return(data)
}
-find_connection <- function() {
+dialoguer.find_connection <- function() {
connected <- FALSE
while (!connected) {
- con <- socketConnection(
- host = SERVER,
- port = PORT,
+ conn <- socketConnection(
+ host = dialoguer.SERVER,
+ port = dialoguer.PORT,
server = FALSE,
open = "a+b"
)
- send(con, UUID)
- uuid_chk <- recv(con)
- connected <- (UUID == uuid_chk)
+ dialoguer.send(conn, dialoguer.UUID)
+ uuid_chk <- dialoguer.recv(conn)
+ connected <- (dialoguer.UUID == uuid_chk)
if (!connected) {
- close(con)
+ close(conn)
}
}
- return(con)
+ return(conn)
}
-import_variable <- function() {
- var_name <- recv(con, FALSE, "character")
+dialoguer.import_variable <- function() {
+ var_name <- dialoguer.recv(dialoguer.con, FALSE, "character")
var_val <- get(var_name)
- send(con, var_val, TRUE)
+ dialoguer.send(dialoguer.con, var_val, TRUE)
}
-assign_variable <- function() {
- var_name <- recv(con, FALSE, "character")
- send(con, TRUE)
- var_val <- recv(con, TRUE)
- send(con, TRUE)
+dialoguer.assign_variable <- function() {
+ var_name <- dialoguer.recv(dialoguer.con, FALSE, "character")
+ dialoguer.send(dialoguer.con, TRUE)
+ var_val <- dialoguer.recv(dialoguer.con, TRUE)
+ dialoguer.send(dialoguer.con, TRUE)
assign(var_name, var_val, envir = globalenv())
}
-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)
+dialoguer.evaluate_expression <- function() {
+ arg_count <- dialoguer.recv(dialoguer.con, FALSE, "integer")
+ dialoguer.send(dialoguer.con, TRUE)
+ kwarg_count <- dialoguer.recv(dialoguer.con, FALSE, "integer")
+ dialoguer.send(dialoguer.con, TRUE)
+ method_name <- dialoguer.recv(dialoguer.con, FALSE, "character")
+ dialoguer.send(dialoguer.con, TRUE)
args <- list()
if (arg_count > 0) {
for (i in 1:arg_count) {
- args <- c(args, recv(con, TRUE))
- send(con, TRUE)
+ args <- c(args, dialoguer.recv(dialoguer.con, TRUE))
+ dialoguer.send(dialoguer.con, TRUE)
}
}
kwargs <- list()
@@ -113,38 +111,50 @@ evaluate_expression <- function() {
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)
+ keys <- c(keys, dialoguer.recv(dialoguer.con))
+ dialoguer.send(dialoguer.con, TRUE)
+ vals <- c(vals, dialoguer.recv(dialoguer.con, TRUE))
+ dialoguer.send(dialoguer.con, TRUE)
}
kwargs <- setNames(vals, keys)
}
args <- c(args, kwargs)
result <- do.call(method_name, args)
- send(con, result, TRUE)
+ dialoguer.send(dialoguer.con, result, TRUE)
+}
+
+dialoguer.save_environment <- function() {
+ file_name <- dialoguer.recv(dialoguer.con, FALSE, "character")
+ dialoguer.send(dialoguer.con, TRUE)
+ all_vars <- ls(envir = globalenv())
+ exclude_vars <- all_vars[grep("dialoguer\\.", all_vars)]
+ vars_to_save <- setdiff(all_vars, exclude_vars)
+ save(list = vars_to_save, file = file_name, envir = globalenv())
}
-con <- find_connection()
+dialoguer.con <- dialoguer.find_connection()
#load target file
-source(TARGET_FILE)
-
-send(con, 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()
- } else if (cmd_int == 3) {
- send(con, TRUE)
- assign_variable()
+source(dialoguer.TARGET_FILE)
+
+dialoguer.send(dialoguer.con, TRUE)
+
+dialoguer.cmd_int <- -1
+while (dialoguer.cmd_int != 0) {
+ dialoguer.cmd_int <- dialoguer.recv(dialoguer.con, FALSE, "integer")
+ if (dialoguer.cmd_int == 1){
+ dialoguer.send(dialoguer.con, TRUE)
+ dialoguer.import_variable()
+ } else if (dialoguer.cmd_int == 2) {
+ dialoguer.send(dialoguer.con, TRUE)
+ dialoguer.assign_variable()
+ } else if (dialoguer.cmd_int == 3) {
+ dialoguer.send(dialoguer.con, TRUE)
+ dialoguer.evaluate_expression()
+ } else if (dialoguer.cmd_int == 4) {
+ dialoguer.send(dialoguer.con, TRUE)
+ dialoguer.save_environment()
}
}
-close(con) \ No newline at end of file
+close(dialoguer.con) \ No newline at end of file