All original non-alphanumeric delimiter characters (including leading ones and repeated runs such as ---) must be preserved in their original positions
Trigger
Reassembly of cased words after per-word formatting
Enforcement
TitleCase.vb — ReassembleString (both overloads) reconstructs the output by mapping word positions back to source character indices
Outcome
Output has identical punctuation and spacing layout to input
Recognized acronyms and abbreviations (e.g. SAIF, LLC, LLP, MD, PhD, directionals NE/NW/SE/SW, state codes OR/CA/WA, roman numerals II/III/IV, organization codes such as OHSU, MCO, AAA) are always fully upper-cased
Trigger
Per-word casing evaluation; word's uppercase form matches an entry in UpperCaseWordList
Enforcement
TitleCase.vb — TitleCaseSingleWord checks If word.ToUpper() IsIn UpperCaseWordList
An ordinal token consisting solely of digits followed by st/nd/rd/th keeps the digits and lower-cases the suffix
Trigger
Per-word casing evaluation; word matches the ordinal pattern (numeric part + suffix)
Enforcement
TitleCase.vb — HasNumberSuffix validates the token via ContainsOnlyNumericCharacters; GetNumberSuffixParts splits the numeric and suffix parts, which are rejoined with the suffix lowered
Outcome
52ND → 52nd; A52ND is not purely numeric so falls through to BR-009
Surname prefixes Mc and O' retain their casing and the following segment is proper-cased
Trigger
After primary per-word casing; word starts with a MixedCasePrefixList entry
Enforcement
TitleCase.vb — TitleCaseSingleWord contains prefix handling logic that checks if the word starts with Mc or O', preserves the prefix, and proper-cases the remainder
Numbers are decomposed by magnitude band (hundred, thousand, million, billion, trillion) with the leading 1 band emitted as the literal "One "
Trigger
NumberToText recursion for values >= 100
Enforcement
mdlTextConversion.vb — NumberToText contains branches for each magnitude band; the function recurses on RoundDown(n, band) to extract the band's value, appends the band name, and recurses on n Mod band for the remainder
Outcome
Word sequence assembled from highest band down (e.g. 1234 → One Thousand Two Hundred Thirty Four)
Sentence casing upper-cases only the first character and lower-cases the rest; Nothing passes through as Nothing and an empty string is unchanged
Trigger
ToSentenceCase invoked
Enforcement
mdlTextConversion.vb — ToSentenceCase method contains Select Case Target.Length branches; when length > 1, it returns the first character upper-cased plus the remainder lower-cased
Capital-letter padding is skipped for any value that already contains a space
Trigger
ToPadCapitalLetters invoked on a string
Enforcement
TitleCase.vb — TitleCaseExtensions.ToPadCapitalLetters checks If Target.Contains(" ") and returns the value unchanged if true; otherwise delegates to PadCapitalLettersFormat.ApplyFormat
Outcome
Value returned unchanged if it already contains a space; otherwise PadCapitalLettersFormat.ApplyFormat is applied
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.