yasp (version 0.1.0)

sentence: sentence

Description

A wrapper around paste that does some simple cleaning appropriate for prose sentences. It

  1. trims leading and trailing whitespace

  2. collapses runs of whitespace into a single space

  3. appends a period (.) if there is no terminal punctuation mark (., ?, or !)

  4. removes spaces preceding punctuation characters: .?!,;:

  5. collapses sequences of punctuation marks (.?!,;:) (possibly separated by spaces), into a single punctuation mark. The first punctuation mark of the sequence is used, with priority given to terminal punctuation marks .?! if present

  6. makes sure a space or end-of-string follows every one of .?!,;:, with an exception for the special case of .,: followed by a digit, indicating the punctuation is decimal period, number separator, or time delimiter

  7. capitalizes the first letter of each sentence (start-of-string or following a .?!)

Usage

sentence(...)

Arguments

...

passed on to paste

Examples

Run this code
# NOT RUN {
compare <- function(x) cat(sprintf(' in: "%s"\nout: "%s"\n', x, sentence(x)))
compare("capitilized and period added")
compare("whitespace:added ,or removed ; like this.and this")
compare("periods and commas in numbers like 1,234.567 are fine !")
compare("colons can be punctuation or time : 12:00 !")
compare("only one punctuation mark at a time!.?,;")
compare("The first mark ,; is kept;,,with priority for terminal marks ;,.")

# vectorized like paste()
sentence(
 "The", c("first", "second", "third"), "letter is", letters[1:3],
 parens("uppercase:", sngl_quote(LETTERS[1:3])), ".")
# }

Run the code above in your browser using DataLab