                     Changes in version 0.3.0.9001                      

  - Extends chk_match() to work with any bare atomic type, as long as x
    and values are of the same type. The extension applies regardless of
    whether values are explicitly provided or derived from x as a symbol
    and the formals of a function within which chk_match() is called.

                 Changes in version 0.3.0 (2026-09-27)                  

New features

  - Adds argument check functions, chk_*(). The family covers the atomic
    types in both scalar and vector form (chk_string(), chk_character(),
    chk_number(), and so on), lists and composite objects (chk_list(),
    chk_data_frame(), chk_tibble(), ...), classes and arbitrary
    conditions (chk_class(), chk_true(), chk_that()), and chk_any() for
    a requirement that any one of several checks may satisfy. See
    vignette("chk"), and ?chk_atomic, ?chk_composite and ?chk_other.

  - Adds glue_vector(), which applies a glue template element-wise to a
    vector. glue() and glue_data() are re-exported alongside it.

  - Adds asciify(), which transliterates accented characters to ASCII.

  - Adds yencode() and ydecode(), which encode strings into a restricted
    character set and back.

  - Fixes NOTE regarding pipes and dependency on R 4.1.

Breaking changes

  - In lookup() and lookuper(), the default argument is renamed to
    .default and follows ..., so it must be named. Calls that pass
    default by name or by position now raise an error.

  - lookup() no longer accepts factors, either as x or as columns of the
    lookup table. Previously, a factor x had its levels looked up. Use
    levels(x) <- lookup(levels(x), lookup_table) for that behavior.

  - zingle() no longer has an na.rm argument. Missing values are handled
    by na.ok.partial, na.ok.all and empty.ok instead. The closest
    equivalent of na.rm = TRUE is na.ok.partial = TRUE, na.ok.all =
    TRUE, empty.ok = TRUE, except that NaN now counts as a value rather
    than as missing. An empty vector is now an error unless empty.ok =
    TRUE; previously it returned NA.

  - ll_assert_labelled() is renamed to ll_chk_labelled(), following the
    chk_ naming used for the new check functions. The old name is
    removed.

Bug fixes and behavior changes

  - Various fixes and improvements to zeq(), zample() and zingle().

  - wrap_error() now honors its wrap argument correctly.

                 Changes in version 0.2.3 (2023-08-22)                  

  - Adds the notate() function.

  - Adds a default parameter to the lookup() and lookuper() functions.

                 Changes in version 0.2.2 (2022-04-29)                  

  - This version fixes an incompatibility with roxygen 7.1.3.

                 Changes in version 0.2.1 (2022-02-02)                  

  - This version includes documentation improvements as well as a few
    other fixes.

                        Changes in version 0.2.0                        

  - This version adds two functions, lookup() and lookuper(), designed
    to look up values from a lookup table in a way that works smoothly
    in an R workflow, in particular within pipes.

                        Changes in version 0.1.0                        

  - This is the initial version of zmisc, which includes three
    functions, zample(), zeq(), and zingle(), for safer sampling,
    sequencing and subsetting in a data processing workflow
