Changelog
Source:NEWS.md
stbl (development version)
New features
-
to_df()now handles atomic vectors provided as named objects (e.g.to_df(letters)) and provides informative error messages in additional cases, such as jagged lists (#203). - New
stabilize_df()andspecify_df()to validate data frame structure and contents (#142).to_df()coerces compatible inputs such as named lists to data frames. - New function
to_df()(and synonymto_data_frame()) to coerce an object to a data frame (#201). - New
stabilize_lst()andspecify_lst()to validate list structure and contents and create pre-configured list validators for nested validation (#110). - New
stabilize_present()validates that a value is non-NULLwithout imposing any type constraints (#110). - New
expect_pkg_error_snapshot()function to snapshot-test the full error output ofpkg_abort()-style errors in one step, combiningexpect_snapshot()withexpect_pkg_error_classes()(#188). - New condition functions:
pkg_abort()throws errors with a standardized, opinionated collection of classes, andexpect_pkg_error_classes()checks that an error with the expected set of classes is thrown (#136). - New specification functions:
specify_*()creates a “stbl-specified function” (class"stbl_specified_fn"), a call to the correspondingstabilize_*()function with arguments pre-filled. For example,stabilize_email <- specify_chr(regex = "^[^@]+@[^@]+\\.[^@]+$")creates astabilize_email()function that callsstabilize_chr()withregex = "^[^@]+@[^@]+\\.[^@]+$", which could then be used to stabilize email addresses (#147, #148, #149, #150, #151). - New function
to_lst()(and synonymto_list()) to coerce an object to a list, with conditional checks forNULLand functions (#157, #166). - New synonym functions for all class functions. For example
to_character()is now a synonym forto_chr(), andspecify_logical()is a synonym forspecify_lgl()(#164). In addition,stabilise_*()synonyms have been added for allstabilize_*()functions (#167).
Breaking changes
-
to_chr_scalar(),to_dbl_scalar(),to_fct_scalar(),to_int_scalar(),to_lgl_scalar(),stabilize_chr_scalar(),stabilize_dbl_scalar(),stabilize_fct_scalar(),stabilize_int_scalar(),stabilize_lgl_scalar(),specify_chr_scalar(),specify_dbl_scalar(),specify_fct_scalar(),specify_int_scalar(), andspecify_lgl_scalar()(and their synonyms) now default toallow_null = FALSEandallow_zero_length = FALSE. Passallow_null = TRUEorallow_zero_length = TRUEto restore the previous behavior (#189, #197).
Potential breaking changes
- Several conditions that formerly included a subclass of “stbl-error-must” no longer include that subclass. This only occurs when “stbl-error-must” was not the most specific subclass (i.e., when a more specific subclass was already included), and therefore should not impact most if any code (#136).
stbl 0.2.0
CRAN release: 2025-09-16
New features
- New predicate functions check if an object can be safely coerced to a specific type. The
is_*_ish()family (is_chr_ish(),is_dbl_ish(),is_fct_ish(),is_int_ish(), andis_lgl_ish()) checks the entire object at once. Theare_*_ish()family (are_chr_ish(),are_dbl_ish(),are_fct_ish(),are_int_ish(), andare_lgl_ish()) checks each element of a vector individually (#23, #93). - New functions for working with doubles are available:
to_dbl(),to_dbl_scalar(),stabilize_dbl(), andstabilize_dbl_scalar()(#23). -
stabilize_chr()now accepts patterns fromstringr::regex(),stringr::fixed(), andstringr::coll()(#87), and can generate more informative error messages for regex failures via the newregex_must_match()andregex_must_not_match()helper functions (#52, #85, #86, #89).
Minor improvements and fixes
- Error messages are now clearer and more standardized throughout the package (#95).
-
to_*()functions now consistently flatten list-like inputs when no information would be lost in the process (#128). -
to_fct()now lists the allowed values in its error message when a value is not in the expected set, making it easier to debug (#67). -
to_lgl()now coerces character representations of numbers (e.g., “0” and “1”) toFALSEandTRUErespectively (#30).
Documentation
- The purpose of and vision for this package are now more clearly described in documentation (#56, #77).
- New
vignette("stbl")provides an overview of the package and its functions (#42).