tests/testthat/_snaps/pluralization.md

simplest

Code
  for (n in 0:2) cli_text("{n} package{?s}")
Message
  0 packages
  1 package
  2 packages
Code
  for (n in 0:2) print(pluralize("{n} package{?s}"))
Output
  0 packages
  1 package
  2 packages

irregular

Code
  for (n in 0:2) cli_text("{n} dictionar{?y/ies}")
Message
  0 dictionaries
  1 dictionary
  2 dictionaries
Code
  for (n in 0:2) print(pluralize("{n} dictionar{?y/ies}"))
Output
  0 dictionaries
  1 dictionary
  2 dictionaries

multiple substitutions

Code
  for (n in 0:2) cli_text("{n} package{?s} {?is/are} ...")
Message
  0 packages are ...
  1 package is ...
  2 packages are ...
Code
  for (n in 0:2) print(pluralize("{n} package{?s} {?is/are} ..."))
Output
  0 packages are ...
  1 package is ...
  2 packages are ...

multiple quantities

Code
  for (m in 0:2) for (n in 0:2) cli_text("{m} package{?s} and {n} folder{?s}")
Message
  0 packages and 0 folders
  0 packages and 1 folder
  0 packages and 2 folders
  1 package and 0 folders
  1 package and 1 folder
  1 package and 2 folders
  2 packages and 0 folders
  2 packages and 1 folder
  2 packages and 2 folders
Code
  for (m in 0:2) for (n in 0:2) print(pluralize(
    "{m} package{?s} and {n} folder{?s}"))
Output
  0 packages and 0 folders
  0 packages and 1 folder
  0 packages and 2 folders
  1 package and 0 folders
  1 package and 1 folder
  1 package and 2 folders
  2 packages and 0 folders
  2 packages and 1 folder
  2 packages and 2 folders

no()

Code
  for (n in 0:2) cli_text("{no(n)} package{?s}")
Message
  no packages
  1 package
  2 packages
Code
  for (n in 0:2) print(pluralize("{no(n)} package{?s}"))
Output
  no packages
  1 package
  2 packages

set qty() explicitly

Code
  for (n in 0:2) cli_text("{qty(n)}There {?is/are} {n} package{?s}")
Message
  There are 0 packages
  There is 1 package
  There are 2 packages
Code
  for (n in 0:2) print(pluralize("{qty(n)}There {?is/are} {n} package{?s}"))
Output
  There are 0 packages
  There is 1 package
  There are 2 packages

collapsing vectors

Code
  pkgs <- (function(n) glue::glue("pkg{seq_len(n)}"))
  for (n in 1:3) cli_text("The {pkgs(n)} package{?s}")
Message
  The pkg1 package
  The pkg1 and pkg2 packages
  The pkg1, pkg2, and pkg3 packages
Code
  for (n in 1:3) print(pluralize("The {pkgs(n)} package{?s}"))
Output
  The pkg1 package
  The pkg1 and pkg2 packages
  The pkg1, pkg2, and pkg3 packages

pluralization and style

Code
  special_style <- list(span.foo = list(before = "<", after = ">"))
  cli_div(theme = special_style)
  for (n in 0:2) cli_text("{n} {.foo package{?s}}")
Message
  0 packages
  1 package
  2 packages
Code
  pkgs <- (function(n) glue::glue("pkg{seq_len(n)}"))
  for (n in 1:3) cli_text("The {.foo {pkgs(n)}} package{?s}")
Message
  The pkg1 package
  The pkg1 and pkg2 packages
  The pkg1, pkg2, and pkg3 packages

post-processing

Code
  for (n in 0:2) cli_text("Package{?s}: {n}")
Message
  Packages: 0
  Package: 1
  Packages: 2
Code
  pkgs <- (function(n) glue::glue("pkg{seq_len(n)}"))
  for (n in 1:2) cli_text("Package{?s}: {pkgs(n)}")
Message
  Package: pkg1
  Packages: pkg1 and pkg2
Code
  for (n in 1:2) print(pluralize("Package{?s}: {pkgs(n)}"))
Output
  Package: pkg1
  Packages: pkg1 and pkg2

issue 158

Code
  print(pluralize("{0} word{?A/B/}"))
Output
  0 wordA
Code
  print(pluralize("{1} word{?A/B/}"))
Output
  1 wordB
Code
  print(pluralize("{9} word{?A/B/}"))
Output
  9 word


Try the cli package in your browser

Any scripts or data that you put into this service are public.

cli documentation built on March 31, 2023, 9:04 p.m.