From a533dc30c5af598387ba141be97143750e349e1c Mon Sep 17 00:00:00 2001 From: aheinri5 <Anna@netzkritzler.de> Date: Thu, 19 Nov 2020 23:17:55 +0100 Subject: [PATCH] Still preparing for flexible read_in functions --- R/generate_functions.R | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/R/generate_functions.R b/R/generate_functions.R index 70c622c..015eab8 100644 --- a/R/generate_functions.R +++ b/R/generate_functions.R @@ -66,19 +66,13 @@ generate_validator_from_element <- function() { #'generate_as_node_func #'@description Generates a method for the generic function as_node based on an XML element +#'@param file The XML file to parse #'@param element_name The name of the XML element to base the method on #'@param subclasses Optional: A named vector of subclasses -generate_as_node_func <- function(path, element_name, subclasses = NULL) { +#'@param show_result Should the generated function be printed to the console? +generate_as_node_func <- function(file, element_name, subclasses = NULL, show_result = TRUE) { - out<- tryCatch( - { - xml_doc <- xml2::read_xml(path, encoding="ISO-8859-1") - }, - - error = function(cond){ - cat("Something went wrong while parsing the XML file for generate_as_node_func.\n") - } - ) + xml_doc <- validate_read_in_xml(file) #doc_matches <- xml2::xml_find_all(xml_doc, paste("//", element_name, sep = "")) element <- xml2::xml_find_first(xml_doc, paste("//", element_name, sep = "")) @@ -94,7 +88,9 @@ generate_as_node_func <- function(path, element_name, subclasses = NULL) { method_str <- paste0(method_str, "\treturn(invisible(", element_name, "_node))\n", "}\n") - cat(method_str) + if(show_result){ + cat(method_str) + } return(invisible(method_str)) } @@ -233,8 +229,7 @@ generate_simple_read_in <- function(element_name, child_name, } func_str <- paste0(func_str, "read_in(ogs6_obj, prj_path, \"", element_name, - "\", \"", child_name, "\", has_name_tag = ", has_name_tag, - "selection_vector = ") + "\", \"", child_name, "\", selection_vector = ") if(has_name_tag){ func_str <- paste0(func_str, child_name, "_names, subclasses_names = ") @@ -243,7 +238,9 @@ generate_simple_read_in <- function(element_name, child_name, } if(!is.null(subclasses_names)){ - func_str <- paste0(func_str, dput(subclasses_names), ")\n") + subclasses_str <- utils::capture.output(invisible(dput(subclasses_names))) + subclasses_str <- paste(subclasses_str, collapse = "") + func_str <- paste0(func_str, subclasses_str, ")\n") }else{ func_str <- paste0(func_str, "NULL)\n") } -- GitLab