From 36737ae57ee106be16426bf9ef088380421ca0ec Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Mon, 3 Nov 2014 21:19:13 -0600 Subject: R: add hash-map and metadata support. --- r/printer.r | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'r/printer.r') diff --git a/r/printer.r b/r/printer.r index 8cf90db..1957210 100644 --- a/r/printer.r +++ b/r/printer.r @@ -2,8 +2,8 @@ if(!exists("..types..")) source("types.r") -.pr_list <- function(..., print_readably=TRUE, join="") { - concatl(lapply(list(...), +.pr_list <- function(lst, print_readably=TRUE, join="") { + concatl(lapply(lst, function(e) .pr_str(e, print_readably)), sep=join) } @@ -11,14 +11,20 @@ if(!exists("..types..")) source("types.r") pr <- print_readably switch(class(exp), "List"={ - data <- paste(lapply(exp, function(e) .pr_str(e, pr)), - sep="", collapse=" ") - paste("(", data, ")", sep="", collapse="") + paste("(", .pr_list(exp, pr, " "), ")", sep="", collapse="") }, "Vector"={ - data <- paste(lapply(exp, function(e) .pr_str(e, pr)), - sep=" ", collapse=" ") - paste("[", data, "]", sep="", collapse="") + paste("[", .pr_list(exp, pr, " "), "]", sep="", collapse="") + }, + "HashMap"={ + hlst <- list() + if (length(exp) > 0) { + for(k in ls(exp)) { + hlst[[length(hlst)+1]] <- k + hlst[[length(hlst)+1]] <- exp[[k]] + } + } + paste("{", .pr_list(hlst, pr, " "), "}", sep="", collapse="") }, "character"={ if (print_readably) { -- cgit v1.2.3