diff --git a/DESCRIPTION b/DESCRIPTION index 0465d56..6695d09 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -32,7 +32,7 @@ Config/testthat/edition: 3 Encoding: UTF-8 Language: en-US Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.3 Collate: 'providers_data.R' 'get_current_providers.R' diff --git a/R/get_current_providers.R b/R/get_current_providers.R index fdc8e8f..30ee071 100644 --- a/R/get_current_providers.R +++ b/R/get_current_providers.R @@ -73,24 +73,30 @@ get_providers <- function(version_num = NULL) { "providers" = providers, "providers_details" = providers_details, "src" = tmp_js_lines, - "dep" = leaflet_providers_dependency(version_num, js_path) + "dep" = leaflet_providers_dependency_url(version_num, js_path) ) class(providers_info) <- "leaflet_providers" return(providers_info) } -leaflet_providers_dependency <- function(version_num, providers_path) { - is_local <- !grepl("^https?://", providers_path) - - src <- dirname(providers_path) - names(src) <- if (is_local) "file" else "href" - +leaflet_providers_dependency_url <- function(version_num, url) { htmltools::htmlDependency( name = "leaflet-providers", version = version_num, - src = src, - script = basename(providers_path), + src = c(href = dirname(url)), + script = basename(url), + all_files = FALSE + ) +} + +leaflet_providers_dependency_pkg <- function() { + htmltools::htmlDependency( + name = "leaflet-providers", + version = providers_version_num, + package = "leaflet.providers", + src = "leaflet-providers", + script = "leaflet-providers.js", all_files = FALSE ) } @@ -117,15 +123,11 @@ get_current_version_num <- function() { #' str(providers_default(), max = 3, list.len = 4) #' providers_default <- function() { - # Move .js file from tmp to sysfile - js_filename_for_inst <- paste0( - "leaflet-providers_", - providers_version_num, - ".js" - ) - js_lines <- paste0( - readLines(system.file(js_filename_for_inst, package = "leaflet.providers")), + readLines(system.file( + "leaflet-providers", "leaflet-providers.js", + package = "leaflet.providers" + )), collapse = "\n" ) @@ -135,10 +137,7 @@ providers_default <- function() { "providers" = providers_data, "providers_details" = providers_details_data, "src" = js_lines, - "dep" = leaflet_providers_dependency( - providers_version_num, - system.file(js_filename_for_inst, package = "leaflet.providers") - ) + "dep" = leaflet_providers_dependency_pkg() ) class(providers_info) <- "leaflet_providers" diff --git a/README.md b/README.md index 88e9481..6fc9dc8 100644 --- a/README.md +++ b/README.md @@ -250,11 +250,11 @@ str(providers_default(), max.level = 2) #> ..$ version : chr "2.0.0" #> ..$ src :List of 1 #> ..$ meta : NULL - #> ..$ script : chr "leaflet-providers_2.0.0.js" + #> ..$ script : chr "leaflet-providers.js" #> ..$ stylesheet: NULL #> ..$ head : NULL #> ..$ attachment: NULL - #> ..$ package : NULL + #> ..$ package : chr "leaflet.providers" #> ..$ all_files : logi FALSE #> ..- attr(*, "class")= chr "html_dependency" #> - attr(*, "class")= chr "leaflet_providers" diff --git a/inst/leaflet-providers_2.0.0.js b/inst/leaflet-providers/leaflet-providers.js similarity index 99% rename from inst/leaflet-providers_2.0.0.js rename to inst/leaflet-providers/leaflet-providers.js index bcde1ed..46b59de 100644 --- a/inst/leaflet-providers_2.0.0.js +++ b/inst/leaflet-providers/leaflet-providers.js @@ -1106,7 +1106,7 @@ } }, AzureMaps: { - url: + url: 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ '&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}'+ '&subscription-key={subscriptionKey}', @@ -1124,7 +1124,7 @@ MicrosoftBaseHybridRoad: 'microsoft.base.hybrid.road', MicrosoftTerraMain: 'microsoft.terra.main', MicrosoftWeatherInfraredMain: { - url: + url: 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ '&tilesetId={variant}&x={x}&y={y}&zoom={z}'+ '&timeStamp={timeStamp}&language={language}' + @@ -1136,7 +1136,7 @@ }, }, MicrosoftWeatherRadarMain: { - url: + url: 'https://atlas.microsoft.com/map/tile?api-version={apiVersion}'+ '&tilesetId={variant}&x={x}&y={y}&zoom={z}'+ '&timeStamp={timeStamp}&language={language}' + diff --git a/scripts/check-package.R b/scripts/check-package.R new file mode 100644 index 0000000..3f67c50 --- /dev/null +++ b/scripts/check-package.R @@ -0,0 +1,50 @@ +## Final checks +devtools::check() + +spelling::spell_check_test(vignettes = TRUE, error = FALSE, skip_on_cran = TRUE) + +# revdepcheck::revdep_reset() +revdepcheck::revdep_check(num_workers = parallel::detectCores()) + +# devtools::check_win_oldrelease() +# devtools::check_win_release() +devtools::check_win_devel() + +# Generate revdep CRAN report (to include in cran-comments.md) +revdep_report_results <- capture.output(revdepcheck::revdep_report_cran()) + +cran_comments_msg <- " +## Test environments + +* local macOS, R 4.3.0 +* GitHub Actions + * macOS + * 4.3 + * windows + * 4.3 + * ubuntu18 + * devel, 4.3, 4.2, 4.1, 4.0, 3.6 +* devtools:: + * check_win_devel() + +## R CMD check results + +0 errors | 0 warnings | 1 note + +" + +# Auto-update cran-comments.md +cat( + file = "cran-comments.md", + sep = "", + "# ", + as.character(Sys.Date()), + "\n\n", + "This submission updates `providers` and `providers.details`.", + "\n\n", + cran_comments_msg, + "\n\n", + paste0(revdep_report_results, collapse = "\n"), + "\n", + "" +) diff --git a/scripts/update_data_and_pkg.R b/scripts/update_data_and_pkg.R index e3b417e..bc6b4a1 100644 --- a/scripts/update_data_and_pkg.R +++ b/scripts/update_data_and_pkg.R @@ -1,6 +1,10 @@ devtools::load_all() todays_data <- get_providers() +if (todays_data$version_num == providers_version_num) { + stop("leaflet-providers up to date") +} + providers_file <- file(description = "R/providers_data.R", "w") cat( "providers_version_num <-", @@ -18,25 +22,14 @@ cat("providers_details_data <- ", file = providers_file) dput(todays_data$providers_details, file = providers_file) close(providers_file) -# Delete old .js files -old_files <- list.files(path = "inst", pattern = ".*\\.js", full.names = TRUE) - -if (length(old_files) > 0) { - unlink(old_files) -} - # Write .js file to inst/ -js_filename_for_inst <- paste0( - "leaflet-providers_", - todays_data$version_num, - ".js" -) +js_filename_for_inst <- "leaflet-providers.js" cat( todays_data$src, "\n", sep = "", - file = file.path("inst", js_filename_for_inst) + file = file.path("inst", "leaflet-providers", js_filename_for_inst) ) # Tests @@ -67,54 +60,3 @@ cat( "\n", paste0(old_news, collapse = "\n") ) - -## Final checks -devtools::check() - -spelling::spell_check_test(vignettes = TRUE, error = FALSE, skip_on_cran = TRUE) - -# revdepcheck::revdep_reset() -revdepcheck::revdep_check(num_workers = parallel::detectCores()) - -# devtools::check_win_oldrelease() -# devtools::check_win_release() -devtools::check_win_devel() - -# Generate revdep CRAN report (to include in cran-comments.md) -revdep_report_results <- capture.output(revdepcheck::revdep_report_cran()) - -cran_comments_msg <- " -## Test environments - -* local macOS, R 4.3.0 -* GitHub Actions - * macOS - * 4.3 - * windows - * 4.3 - * ubuntu18 - * devel, 4.3, 4.2, 4.1, 4.0, 3.6 -* devtools:: - * check_win_devel() - -## R CMD check results - -0 errors | 0 warnings | 1 note - -" - -# Auto-update cran-comments.md -cat( - file = "cran-comments.md", - sep = "", - "# ", - as.character(Sys.Date()), - "\n\n", - "This submission updates `providers` and `providers.details`.", - "\n\n", - cran_comments_msg, - "\n\n", - paste0(revdep_report_results, collapse = "\n"), - "\n", - "" -) diff --git a/tests/testthat/test-providers_default.R b/tests/testthat/test-providers_default.R new file mode 100644 index 0000000..e21391a --- /dev/null +++ b/tests/testthat/test-providers_default.R @@ -0,0 +1,46 @@ +test_that("providers_default() returns valid leaflet_providers object", { + result <- providers_default() + + expect_s3_class(result, "leaflet_providers") + expect_named(result, c("version_num", "providers", "providers_details", "src", "dep")) + expect_identical(result$version_num, providers_version_num) + expect_identical(result$providers, providers_data) + expect_identical(result$providers_details, providers_details_data) +}) + +test_that("providers_default() reads JS source from packaged file", { + result <- providers_default() + + expect_type(result$src, "character") + expect_gt(nchar(result$src), 0) + expect_match(result$src, "L.TileLayer.Provider", fixed = TRUE) +}) + +test_that("providers_default() dep uses package-based htmlDependency", { + dep <- providers_default()$dep + + expect_s3_class(dep, "html_dependency") + expect_identical(dep$name, "leaflet-providers") + expect_identical(dep$version, providers_version_num) + expect_identical(dep$package, "leaflet.providers") + expect_identical(dep$script, "leaflet-providers.js") + expect_false(dep$all_files) + + # src should be a file path, not an href + expect_true("file" %in% names(dep$src)) +}) + +test_that("leaflet_providers_dependency_url() creates href-based dependency", { + dep <- leaflet.providers:::leaflet_providers_dependency_url( + "1.0.0", + "https://example.com/leaflet-providers.js" + ) + + expect_s3_class(dep, "html_dependency") + expect_identical(dep$name, "leaflet-providers") + expect_identical(dep$version, "1.0.0") + expect_identical(dep$script, "leaflet-providers.js") + expect_true("href" %in% names(dep$src)) + expect_identical(dep$src[["href"]], "https://example.com") + expect_null(dep$package) +})