Changes in 0.10.0 and 0.10.0.9000
New functionality:
tools::toTitleCase()
."tight"
which allows to suppress all underscores between numerals and letters.sep_out
gets proper vectorization. In case of length(sep_out) > 1
differing substrings are connected by the (possibly) differing elements of sep_out
. Therefore, sep_out
gets accordingly shortened or the last element of sep_out
gets recycled to match the number of needed separators for each element of string
.transliterations
argument is now aware of non-UTF8 encoded input.Infrastructure:
tools::toTitleCase()
inside to_title_case()
. to_any_case()
tests (janitor-pkg-tests, transliterations and complex strings) when platform charset is not UTF-8 to resolve CRAN notification regarding character encoding.sep_in
parameter"tight"
which allows to suppress all underscores between numerals and letters.vapply()
replacements.transliterations
argument is now aware of non-UTF8 encoded input.sep_out
: sep_out
now behaves better for vector input (length > 1). Instead of returning different strings, the return is now one string, which uses separators according to the supplied order. When length(sep_out) > 1
, the last element of sep_out
gets recycled. to_random_case()
, which will randomly convert letters into upper or lower case.to_title_case()
, which is basically to_parsed_case()
with sep_out = " "
wrapped within tools::toTitleCase()
and should be especially useful for proper labels within graphics or business reports.tools::toTitleCase()
.to_any_case()
tests (janitor-pkg-tests, transliterations and complex strings) when platform charset is not UTF-8.to_sentence_case()
(same as snake, but first letter is uppercase and default sep_out is space).numerals
argument to all caseconverters including to_any_case()
to format the alignment of digits (middle
, left
,right
, asis
). Therefore parsing_option
nr 4 might be removed in later releases, as it is the same as parsing_option = 1
and numerals = "asis"
.transliterations
, anything that matches the name is replaced by the corresponding value.sep_in
from NULL
to "[^[:alnum:]]"
. This will make it easier for beginners and in general also faster to modify cases from names like names(iris)
. Updated the regarding sections in the vignette and readme.CRAN release
Changes since last update:
parsing_options:
to_swap_case()
is new. Within to_any_case()
this conversion can be called also via case = "flip"
.replace_special_characters
, which is now called transliterations
preprocess
, which is now called sep_in
postprocess
, which is now called sep_out
to_swap_case()
, which is also available in to_any_case()
via
case = "swap"
or case = "flip"
parsing_option
s 3 and 4 with 5 and 6. replace_special_characters
, preprocess
and postprocess
.to_xxx_case()
functionspreprocess
to sep_in
, postprocess
to sep_out
,
replace_special_characters
to transliterations
.CRAN update
for changes see V 0.7.0
process
is deprecated after changing implementation and setting a reasonable default.abbreviations
argument to any_case()
abbreviation
specific behaviour for mixed caseparsingoption
to parsing_option
parsingoption
argument to parsing_option
process
argument: changed implementation in to_any_case
, set a reasonable default, implemented the behaviour also in to_xxx shortcut functions, deprecated process
argumentif(identical(stringr::str_length(string), integer())){return(character())}
to_any_case()
and shortcuts (to_xxx_case()
functions) preserve name attribute nowto_any_case()
and the other converter function now preserve the names attribute. (Thanks to @strengejacke)CRAN update
Changes since last CRAN submission include:
replace_special_character
argumentcase == "none"
works now with preprocess
.case = upper_lower
no also works for NA
's.to_mixed_case()
, to_lower_upper_case()
and to_upper_lower_case()
.Implemented two further parsing options:
bug fix in dev version: protect works now for beginning and end of substrings and not anymore only for complete substrings.
Fix bug for character(0)
in combination with postprocess
Input of replace special character
is now a character vector. It's entries have to be elements of stringi::stri_trans_list()
or names of the transliteration dictionary list,
which comes with this package. This update enables users to transliterate strings from different encodings, in a flexible way. For example UTF8 to Ascii, ... .
"all_caps"
, "lower_camel"
and "upper_camel"
for "screaming_snake"
, "small_camel"
and "big_camel"
.to_any_case("r.aStudio", protect = "a", postprocess = "-", case = "big_camel")
will now
correctly return "R-.AStudio" (so the protection will be triggered by the input and not by the output). In contrast protect = A
will yield in unprotected output (-A-
)check_design_rule()
(not exported)to_any_case()
.
1: "RRRStudio" -> "RRR_Studio" stays as default
2: "RRRStudio -> RRRS_tudio"
any other number will suppress the parsing (only spaces will be converted into "_")to_any_case()
to_any_case()
to_any_case()
: empty_fill, which allows to fill strings
matching to "" with the supplied string. unique_sep adds an integer suffix separated
with the supplied string, when not NULL
.to_any_case
and removed a bug.to_snake_case_internal()
which does the preprocessing and simplifies all other functions (especially to_any_case()
) a little bit.to_screaming_snake_case()
to_any_case()
.to_any_case()
(all functionality and documentation provided, but implementation has to be cleaned and also tests have to be written)to_snake_case_dev(c("ssRRss"))
returns now ss_r_rss
instead of"ss_r_r_ss"
to_snake_case()
now treats only spaces like underscores now (not dots anymore)to_any_case()
, which will wrap the other three and will have pre- and postprocess argumentsstring
(without deprecating
the old name before, since the package was in early dev-stage anyway).to_snake_case()
which converts strings to snake_case.to_small_camel_case()
and to_big_camel_case()
which internally
build up on to_snake_case()
and convert to the appropriate target case.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.