1 2parse_urls <- function(urls) { 3 out <- str_trim(strsplit(str_trim(urls), "[,\\s]+", perl = TRUE)[[1]]) 4 grep("^http", out, value = TRUE) 5} 6 7deparse_urls <- function(urls) { 8 paste(urls, collapse = ",\n ") 9} 10 11idesc_get_urls <- function(self, private) { 12 urls <- self$get("URL") 13 if (is.na(urls)) { 14 character() 15 } else { 16 parse_urls(urls) 17 } 18} 19 20idesc_set_urls <- function(self, private, urls) { 21 stopifnot(is.character(urls)) 22 self$set(URL = deparse_urls(urls)) 23 invisible(self) 24} 25 26idesc_add_urls <- function(self, private, urls) { 27 stopifnot(is.character(urls)) 28 urls <- unique(c(self$get_urls(), urls)) 29 self$set(URL = deparse_urls(urls)) 30 invisible(self) 31} 32 33idesc_del_urls <- function(self, private, pattern) { 34 stopifnot(is_string(pattern)) 35 urls <- self$get_urls() 36 filt <- grep(pattern, urls, invert = TRUE, value = TRUE, perl = TRUE) 37 if (length(filt) > 0) { 38 self$set(URL = deparse_urls(filt)) 39 } else { 40 self$del("URL") 41 } 42 invisible(self) 43} 44 45idesc_clear_urls <- function(self, private) { 46 self$del("URL") 47 invisible(self) 48} 49