diff --git a/.Rbuildignore b/.Rbuildignore index dcbcf4b..544bb70 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -7,3 +7,4 @@ ^docs$ ^pkgdown$ ^vignettes/articles$ +^cran-comments\.md$ diff --git a/DESCRIPTION b/DESCRIPTION index 151c5f5..f4994a5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,13 +1,9 @@ Package: lzstring Type: Package -Title: An R wrapper of lzstring C++ library +Title: Wrapper for 'lz-string' C++ Library Version: 0.1.0 -Author: Sam Parmar -Maintainer: Sam Parmar -Description: This package provides an R interface to the lz-string C++ library, - enabling LZ-based compression and decompression of strings directly within - R. This can be particularly useful for reducing the memory footprint of - large strings or for transmitting compressed data. +Description: Provide access to the 'lz-string' C++ library for LZ-based + compression and decompression of strings. License: MIT + file LICENSE Encoding: UTF-8 LazyData: true @@ -16,5 +12,19 @@ LinkingTo: Suggests: testthat (>= 3.0.0) Config/testthat/edition: 3 -RoxygenNote: 7.2.3 -URL: https://parmsam.github.io/lzstring-r/ +RoxygenNote: 7.3.1 +URL: https://parmsam.github.io/lzstring-r/, https://github.com/parmsam/lzstring-r +Authors@R: c( + person( + given = "Sam", + family = "Parmar", + role = c("aut", "cre"), + email = "parmartsam@gmail.com" + ), + person( + given = "Andrey", + family = "Krasnov", + role = "cph", + comment = "Author of included lz-string C++ library" + )) +BugReports: https://github.com/parmsam/lzstring-r/issues diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..4cb1656 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,3 @@ +# lzstring 0.1.0 + +* Initial CRAN submission. diff --git a/R/lzstringr-package.R b/R/lzstringr-package.R index dea1e85..d800f61 100644 --- a/R/lzstringr-package.R +++ b/R/lzstringr-package.R @@ -82,9 +82,7 @@ safe_decompress <- function(string, f) { #' @return A character string representing the compressed input string in Base64 format. #' @export #' @examples -#' \dontrun{ #' compressToBase64("Hello, world!") -#' } compressToBase64 <- function(string) { stopifnot( "`string` must be a character." = is.character(string), @@ -101,9 +99,8 @@ compressToBase64 <- function(string) { #' @return A character string representing the decompressed input string. #' @export #' @examples -#' \dontrun{ -#' decompressFromBase64(compressed_string) -#' } +#' x <- compressToBase64("Hello, world!") +#' decompressFromBase64(x) decompressFromBase64 <- function(string) { stopifnot( "`string` must be a character." = is.character(string), @@ -120,9 +117,7 @@ decompressFromBase64 <- function(string) { #' @return A character string representing the compressed input string in Encoded URI Component format. #' @export #' @examples -#' \dontrun{ #' compressToEncodedURIComponent("Hello, world!") -#' } compressToEncodedURIComponent <- function(string) { stopifnot( "`string` must be a character." = is.character(string), @@ -139,9 +134,8 @@ compressToEncodedURIComponent <- function(string) { #' @return A character string representing the decompressed input string. #' @export #' @examples -#' \dontrun{ -#' decompressFromEncodedURIComponent(compressed_string) -#' } +#' x <- compressToEncodedURIComponent("Hello, world!") +#' decompressFromEncodedURIComponent(x) decompressFromEncodedURIComponent <- function(string) { stopifnot( "`string` must be a character." = is.character(string), diff --git a/README.Rmd b/README.Rmd index 1103809..45847cf 100644 --- a/README.Rmd +++ b/README.Rmd @@ -26,6 +26,12 @@ The goal of lzstring-r is to provide an R wrapper for the [lzstring C++ library] ## Installation +You can install the released version of lzstringr from CRAN with: + +``` r +install.packages("lzstringr") +``` + You can install the development version of lzstringr from [GitHub](https://github.com/) with: ``` r diff --git a/README.md b/README.md index e670089..749c5a9 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,12 @@ lzstring in JavaScript—peek at his work over ## Installation +You can install the released version of lzstringr from CRAN with: + +``` r +install.packages("lzstringr") +``` + You can install the development version of lzstringr from [GitHub](https://github.com/) with: diff --git a/cran-comments.md b/cran-comments.md new file mode 100644 index 0000000..858617d --- /dev/null +++ b/cran-comments.md @@ -0,0 +1,5 @@ +## R CMD check results + +0 errors | 0 warnings | 1 note + +* This is a new release. diff --git a/man/compressToBase64.Rd b/man/compressToBase64.Rd index 481d40c..0d90c79 100644 --- a/man/compressToBase64.Rd +++ b/man/compressToBase64.Rd @@ -16,7 +16,5 @@ A character string representing the compressed input string in Base64 format. This function takes a string as input and returns a compressed version of the string in Base64 format. } \examples{ -\dontrun{ compressToBase64("Hello, world!") } -} diff --git a/man/compressToEncodedURIComponent.Rd b/man/compressToEncodedURIComponent.Rd index e1bdc4d..cdd7942 100644 --- a/man/compressToEncodedURIComponent.Rd +++ b/man/compressToEncodedURIComponent.Rd @@ -16,7 +16,5 @@ A character string representing the compressed input string in Encoded URI Compo This function takes a string as input and returns a compressed version of the string in Encoded URI Component format. } \examples{ -\dontrun{ compressToEncodedURIComponent("Hello, world!") } -} diff --git a/man/decompressFromBase64.Rd b/man/decompressFromBase64.Rd index a97d0db..fef86c4 100644 --- a/man/decompressFromBase64.Rd +++ b/man/decompressFromBase64.Rd @@ -16,7 +16,6 @@ A character string representing the decompressed input string. This function takes a compressed string in Base64 format as input and returns the decompressed version of the string. } \examples{ -\dontrun{ -decompressFromBase64(compressed_string) -} +x <- compressToBase64("Hello, world!") +decompressFromBase64(x) } diff --git a/man/decompressFromEncodedURIComponent.Rd b/man/decompressFromEncodedURIComponent.Rd index 958ece4..6f0461f 100644 --- a/man/decompressFromEncodedURIComponent.Rd +++ b/man/decompressFromEncodedURIComponent.Rd @@ -16,7 +16,6 @@ A character string representing the decompressed input string. This function takes a compressed string in Encoded URI Component format as input and returns the decompressed version of the string. } \examples{ -\dontrun{ -decompressFromEncodedURIComponent(compressed_string) -} +x <- compressToEncodedURIComponent("Hello, world!") +decompressFromEncodedURIComponent(x) } diff --git a/vignettes/articles/performance.Rmd b/vignettes/articles/performance.Rmd index 2cc6174..280ce36 100644 --- a/vignettes/articles/performance.Rmd +++ b/vignettes/articles/performance.Rmd @@ -24,7 +24,7 @@ generate_random_string <- function(length) { } # Prepare a data frame to store benchmark results -benchmark_results <- data.frame(length_str = numeric(), comp_time = numeric(), decomp_time = numeric()) +benchmark_results <- data.frame(raw_len = numeric(), comp_len = numeric(),comp_time = numeric(), decomp_time = numeric()) # Run benchmark for each string length for (i in 1:100) { @@ -39,19 +39,31 @@ for (i in 1:100) { decomp_time_tmp <- as.numeric(decomp$median) comp_time_tmp <- as.numeric(comp$median) # Store the median time and string length - benchmark_results <- rbind(benchmark_results, data.frame(length_str = nchar(big_str), comp_time = comp_time_tmp, decomp_time = decomp_time_tmp)) + benchmark_results <- rbind(benchmark_results, data.frame(raw_len = nchar(big_str), comp_len = nchar(comp$result), comp_time = comp_time_tmp, decomp_time = decomp_time_tmp)) } # Convert time to milliseconds benchmark_results$comp_time <- benchmark_results$comp_time * 1000 benchmark_results$decomp_time <- benchmark_results$decomp_time * 1000 ``` +Let's plot the compression ratio for each string length. Compression ratio is the ratio between the length of the raw string to the length of the compressed string. These ratios are not good because the strings we're producing are random and not very compressible, but they're good for testing compression and decompression times. + +```{r plot-size-results, fig.width = 7, fig.asp = 0.6} +benchmark_results$compression_ratio <- benchmark_results$raw_len / benchmark_results$comp_len +ggplot(benchmark_results) + + geom_line(aes(x = raw_len, y = compression_ratio)) + + labs(x = "String length (characters)", + y = "Compression Ratio") + + theme_minimal() + + theme(legend.position = "bottom") +``` + Now let's plot the results for compression and decompression times of all those strings we created. -```{r plot-results, fig.width = 7, fig.asp = 0.6} +```{r plot-time-results, fig.width = 7, fig.asp = 0.6} ggplot(benchmark_results) + - geom_line(aes(x = length_str, y = comp_time, col = "Compression"), ) + - geom_line(aes(x = length_str, y = decomp_time, col = "Decompression")) + + geom_line(aes(x = raw_len, y = comp_time, col = "Compression"), ) + + geom_line(aes(x = raw_len, y = decomp_time, col = "Decompression")) + labs(x = "String length (characters)", y = "Time (milliseconds)") + theme_minimal() +