I though about using fs::path_norm()
-- which does interpret "../"
, but it eliminates the second /
in http://
.
base_url <- "https://<domain>.com/first/second"
ref <- "../file.ext"
library(fs)
p <- path(base_url, ref)
path_norm(p)
# https:/<domain>.com/first/file.ext
Any ideas?
1 Like
@seasmith A workaround to use the path computation features of the fs package while preserving the URL would be to prepend the domain after performing the path computation. For example, something like the following:
library(fs)
options(domain = "https://<domain>.com")
add_domain <- function(path, domain = getOption("domain")) paste0(domain, path)
resolve_path <- function(base, ref) path_norm(path(base, ref))
p <- resolve_path("/first/second", "../file.ext")
p <- add_domain(p)
## [1] "https://<domain>.com/first/file.ext"
1 Like
@jdblischak Turns out xml2
had the winning function. Earlier, I had only examined url_relative()
because it sounds right while url_absolute()
is the winner.
base_url <- "https://forum.posit.co/c/general"
href <- "../../t/create-web-file-paths-that-can-interpret"
xml2::url_absolute(href, base_url)
# [1] "https://forum.posit.co/t/create-web-file-paths-that-can-interpret"
2 Likes
@seasmith Awesome! Thanks for sharing your solution. That is a useful function to know about.
For future readers, could you please mark your answer as the solution?
FAQ: How do I mark a solution?
system
Closed
July 17, 2019, 2:36pm
5
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.