Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
# Setting up a tmp folder to use as the working directory for
# the vignette. Also create a folder used in examples below.
tmp <- withr::local_tempdir()
dir.create(path = file.path(tmp, "my_root_path", "my_project"), recursive = TRUE)
library(connector)
## -----------------------------------------------------------------------------
connector_myclass <- R6::R6Class(
"connector_myclass",
inherit = Connector
)
connector_myclass$new()
## -----------------------------------------------------------------------------
connector_project <- R6::R6Class(
"connector_project",
inherit = ConnectorFS,
public = list(
initialize = function(project) {
private$.project <- project
path <- file.path(tmp, "my_root_path", project)
super$initialize(path)
}
),
private = list(
.project = NULL
),
active = list(
project = function() {
private$.project
}
)
)
## -----------------------------------------------------------------------------
my_project <- connector_project$new(project = "my_project")
print(my_project)
## -----------------------------------------------------------------------------
# First list current content:
my_project |>
list_content_cnt()
# Write some content:
my_project |>
write_cnt("Hello world!", "my_file.txt")
# List content again:
my_project |>
list_content_cnt()
# Read the content:
my_project |>
read_cnt("my_file.txt")
## -----------------------------------------------------------------------------
# Print the generic
print(list_content_cnt)
# List the registered s3 methods
methods("list_content_cnt") |>
cat(sep = "\n")
## -----------------------------------------------------------------------------
list_content_cnt.connector_project <- function(connector_object, ...) {
cli::cli_alert("Listing content of {connector_object$project}")
NextMethod()
}
## -----------------------------------------------------------------------------
# List methods again
methods("list_content_cnt") |>
cat(sep = "\n")
# Print my_project connector to see associated methods
print(my_project)
## -----------------------------------------------------------------------------
my_project |>
list_content_cnt()
## -----------------------------------------------------------------------------
my_project_extra <- ConnectorFS$new(
path = file.path(tmp, "my_root_path", "my_project"),
extra_class = "my_extra_class"
)
print(my_project_extra)
## -----------------------------------------------------------------------------
list_content_cnt.my_extra_class <- function(connector_object, ...) {
cli::cli_alert("Listing content of {connector_object$path}")
NextMethod()
}
## -----------------------------------------------------------------------------
# List methods
methods("list_content_cnt")
# Print my_project_extra connector to see associated methods
print(my_project_extra)
# List content to see the new message
my_project_extra |>
list_content_cnt()
## -----------------------------------------------------------------------------
read_ext.myformat <- function(path, ...) {
cli::cli_alert("Reading myformat file")
readLines(con = path)
}
write_ext.myformat <- function(file, x, ...) {
cli::cli_alert("Writing myformat file")
writeLines(text = x, con = file)
}
## -----------------------------------------------------------------------------
# List already existing content:
my_project |>
list_content_cnt()
# Write some content in myformat:
my_project |>
write_cnt("Hello new format!", "new_file.myformat")
# List content again:
my_project |>
list_content_cnt()
# Read the content:
my_project |>
read_cnt("new_file.myformat")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.