Un pack es una lista con nombres de funciones vectorizadas. No se registra
en estado global: puede definirse en otro paquete o en un script y conectarse
directamente con la propiedad validador de Formato o con
validadores_personales en perfilar(). Esta forma permite agregar países o
dominios sin modificar el núcleo de lupa; el pack uruguayo predeterminado
de perfilar() usa exactamente esta misma puerta.
Uso
pack_validadores(nombre, validadores, pais = NULL, descripcion = NULL)
validadores_internacionales()
validadores_uruguay()Argumentos
- nombre
Nombre del pack.
- validadores
Lista con nombres de funciones que aceptan un vector y devuelven un vector lógico de igual longitud.
- pais
Código ISO 3166 alpha-2 opcional del país al que pertenece el pack.
NULLrepresenta un pack internacional o no territorial.- descripcion
Descripción breve opcional.
Valor
pack_validadores() devuelve un objeto S3 pack_validadores.
validadores_internacionales() y validadores_uruguay() devuelven packs
preparados para usar.
Ejemplos
internacionales <- validadores_internacionales()
internacionales$correo(c("persona@example.org", "incorrecto"))
#> [1] TRUE FALSE
# Un pack de otro país se construye sin registrar ni cambiar el núcleo.
digito_rut_cl <- function(x) {
uno <- function(valor) {
z <- toupper(gsub("[.-]", "", valor))
if (!grepl("^[0-9]{7,8}[0-9K]$", z)) return(FALSE)
cuerpo <- as.integer(strsplit(substr(z, 1, nchar(z) - 1), "")[[1]])
suma <- sum(rev(cuerpo) * rep(2:7, length.out = length(cuerpo)))
esperado <- 11 - suma %% 11
esperado <- if (esperado == 11) "0" else if (esperado == 10) "K" else
as.character(esperado)
identical(substr(z, nchar(z), nchar(z)), esperado)
}
ifelse(is.na(x), NA, vapply(as.character(x), uno, logical(1)))
}
chile <- pack_validadores(
"Chile", list(rut = digito_rut_cl), pais = "CL",
descripcion = "Validadores mantenidos por el proyecto consumidor."
)
chile$rut(c("12.345.678-5", "12.345.678-4"))
#> [1] TRUE FALSE