| Title: | Struct-Like Data Type Checking and Enforcement | 
| Version: | 0.1.3 | 
| Description: | Enforcement of field types in lists. A drop-in tool to allow for dynamic input data that might be questionably parsed or cast to be coerced into the specific desired format in a reasonably performant manner. | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| Suggests: | testthat (≥ 3.0.0) | 
| Config/testthat/edition: | 3 | 
| Imports: | dplyr, lubridate, rlang | 
| NeedsCompilation: | yes | 
| Packaged: | 2025-05-29 16:10:52 UTC; yakumo | 
| Author: | Samuel Sapire [aut, cre, cph], Sean Barrett [ctb] | 
| Maintainer: | Samuel Sapire <sapires@protonmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-06-02 09:10:02 UTC | 
Bind as Struct
Description
Given a set of lists/dataframes, attempt to join them as a dataframe with field
types matching the specified template. The default and fastest approach simply
relies on dplyr::bind_rows to use all fields present in the lists to be
joined, while strict mode ensures that the template fields and only the template
fields are present.
Usage
bind_as_struct(template, ..., strict = FALSE)
Arguments
| template | A named list to use as a template. | 
| ... | The lists to join | 
| strict | Use all and only the fields in the template. Default: FALSE | 
Value
A dataframe containing the combined inputs.
Examples
bind_as_struct(list("a" = character(0)), list("a" = 1), list("a" = "a"))
List Type Checking
Description
Given two named objects, go through both and make the types of the second match the types of the first.
Usage
type_check(
  template,
  target,
  with_cast = FALSE,
  log_items = c("casts", "missing", "excess", "debug")[c(1, 3)]
)
Arguments
| template | 
 | 
| target | 
 | 
| with_cast | 
 | 
| log_items | 
 | 
Value
The target object, with its types appropriately cast.
Examples
type_check(
  list("a" = character(0), "b" = integer(0)),
  data.frame("a" = c(1,2), "b" = c(3,4)),
  TRUE, NULL
)