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