
verifyr2 is an R package for extendable file comparison
classes and methods including an example shiny app for
combining the functions into a convenient application.
The project is available in cran and can be installed with the following command:
> install.packages("verifyr2")The latest development version can be installed from github using
different install packages that work with github projects. One such
option would be to use the devtools package:
> install.packages("devtools")
> library("devtools")
> install_github("ejuhjav/verifyr2")Following additional libraries can be installed to extend the provided comparison functionality:
> # image comparison functionality
> install.packages("magick")
>
> # pdf comparison functionality
> install.packages("pdftools")Launching the shiny app requires that you have the
following additional libraries installed as documented in the suggestion
list; shinyjs, shinyFiles, and
DT. After all the necessary libraries are available, the
included shiny app can be launched with the following
command:
> verifyr2::run_example()> config <- Config$new()
> comparator <- verifyr2::create_comparator(file1, file2)
> comparator$vrf_summary(config = config)
> comparator$vrf_details(config = config)instantiating an explicit comparator manually
> config <- Config$new()
> comparator <- RtfFileComparator$new(file1, file2)
> comparator$vrf_summary(config = config)
> comparator$vrf_details(config = config)Image comparison features - comparing single images as well as
supported embedded images in file contents - requires additional
magick library to be installed. This is defined as an
optional requirement for the verifyr2 package due to the
additional OS level requirements of the package. For more details on the
package installation, see magick package.
PDF comparison features - reading PDF file contents as text for
details comparison - requires additional pdftools library
to be installed. This is defined as an optional requirement for the
verifyr2 package due to the additional OS level
requirements of the package. For more details on the package
installation, see pdftools package.
The file comparison logic is implemented with a generic structure that supports easy addition of new comparison logic for different file types. In most cases, this will simply require an implementation of a new file comparator with the file extension name and implementing the file contents getter. The included simplified implementation for pdf file comparison - without testing pdftools availability and excluding the logging parts - is an example of how to do this (see source file to see the full implementation with documentation).
When using the provided generic create_comparator
function along with your custom comparator class implementation, note
that the comparator class name prefix must match with the compared file
type.
#' PdfFileComparator.R
#'
#' @include TxtFileComparator.R
#'
#' @export
#'
PdfFileComparator <- R6::R6Class(
"PdfFileComparator",
inherit = TxtFileComparator,
public = list(
vrf_contents = function(file, config, omit) {
content <- pdftools::pdf_text(file)
content <- paste(content, collapse = "")
content <- strsplit(content, "\n")[[1]]
self$vrf_contents_inner(content, omit, options)
}
)
)Contributions to verifyr2 are dynamic and welcome!
Whether you are fixing a typo, reporting a bug, or building a brand-new
file comparator, we appreciate your help.
Please see our Contributing Guide for details on our code style, test requirements, and how to set up your local R development environment.
verifyr2 package implementation is based on the concept
of the verifyr
package.