## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup, include = FALSE---------------------------------------------------
library(controller)

## ----eg-dplyr-----------------------------------------------------------------
library(dplyr, warn.conflicts = FALSE)
shades <- c("daffodil", "purple", "magenta", "azure", "navy", "violet")

recode(shades,
       daffodil = "yellow",
       purple = "purple",
       magenta = "pink",
       azure = "blue",
       navy = "blue",
       violet = "purple")

## ----eg-control---------------------------------------------------------------
library(controller)
data("colour_thesaurus")

control(shades, colour_thesaurus)

## ----eg-control-names---------------------------------------------------------
df <- data.frame(temp = 20, humid = 65, `wind speed` = 10, date = "2024-01-01")
df

control_names(df, thesaurus = data.frame(
  preferred = c("temperature", "humidity", "wind_speed"),
  variant = c("temp", "humid", "wind speed")
))

## ----eg-ci--------------------------------------------------------------------
shades_ci <- toupper(shades)
control_ci(shades_ci, colour_thesaurus)

## ----eg-boundary--------------------------------------------------------------
df <- data.frame(preferred = "foo bar", variant = "foo-bar")
control(c("foo bar", "foo_bar", "foobar"), df,
        fuzzy_boundary = TRUE, quiet = FALSE)

## ----eg-encoding--------------------------------------------------------------
df <- data.frame(preferred = "bar", variant = "fo\u00f6")
control("foo", df, fuzzy_encoding = TRUE, quiet = FALSE)

## ----eg-coalesce--------------------------------------------------------------
control_matches(shades_ci, colour_thesaurus, case_insensitive = TRUE)

## ----thesaurus-preview--------------------------------------------------------
head(colour_thesaurus)

## ----eg-custom-thesaurus------------------------------------------------------
my_thesaurus <- data.frame(
  preferred = c("feline", "canine"),
  variant = c("cat", "dog")
)

animals <- c("cat", "dog", "parrot")
control(animals, my_thesaurus)

## ----eg-thesaurus-cols--------------------------------------------------------
my_wider_thesaurus <- data.frame(
  code = c("FEL", "CAN"),
  label = c("feline", "canine"),
  variant = c("cat", "dog")
)

control(animals, my_wider_thesaurus, thesaurus_cols = c("label", "variant"))

## ----eg-fish------------------------------------------------------------------
nationality_zip <- system.file("extdata", "fish-nationality.zip",
                               package = "controller")
fish_nationality <- read_fish(nationality_zip)
head(fish_nationality)

