## ----setup--------------------------------------------------------------------
#| include: false
library(livelink)


## -----------------------------------------------------------------------------
url <- as.character(webr_repl_link("hist(rnorm(100))", filename = "plot.R"))

preview <- preview_webr_link(url)
preview


## -----------------------------------------------------------------------------
preview$total_files
preview$files_data[[1]]$name


## -----------------------------------------------------------------------------
print(preview, show_content = TRUE)


## -----------------------------------------------------------------------------
out <- file.path(tempdir(), "recovered")

result <- decode_webr_link(url, output_dir = out)
result


## -----------------------------------------------------------------------------
#| eval: false
# decode_webr_link(url, output_dir = "~/analysis", create_subdir = FALSE)


## -----------------------------------------------------------------------------
decode_webr_link(url, output_dir = out)


## -----------------------------------------------------------------------------
project <- list(
  "main.R"    = "source('utils.R')\nrun()",
  "utils.R"   = "run <- function() 42",
  "README.md" = "# Analysis\n\nWith an accent: café"
)

link <- webr_repl_project(project)

recovered_dir <- file.path(tempdir(), "roundtrip")
invisible(decode_webr_link(as.character(link), output_dir = recovered_dir))

files <- list.files(recovered_dir, recursive = TRUE, full.names = TRUE)
recovered <- setNames(
  lapply(files, function(f) paste(readLines(f, warn = FALSE), collapse = "\n")),
  basename(files)
)

identical(recovered[sort(names(recovered))], project[sort(names(project))])


## -----------------------------------------------------------------------------
app_url <- as.character(shinylive_r_link("library(shiny)\nshinyApp(fluidPage(), function(i, o) {})"))

preview_shinylive_link(app_url)


## -----------------------------------------------------------------------------
decode_shinylive_link(app_url, output_dir = file.path(tempdir(), "app"))


## -----------------------------------------------------------------------------
py_url <- as.character(shinylive_py_link("from shiny import App, ui"))

preview_shinylive_link(py_url)$engine


## -----------------------------------------------------------------------------
urls <- c(
  as.character(webr_repl_link("plot(1:10)", filename = "one.R")),
  as.character(webr_repl_link("hist(rnorm(50))", filename = "two.R"))
)

batch <- decode_webr_link(urls, output_dir = file.path(tempdir(), "batch"))
batch


## -----------------------------------------------------------------------------
repl_urls(preview)
repl_urls(batch)

