john-okeefe
eea08630ce
feat: implement punctuation-aware tag and contributor normalization
Add comprehensive normalization functions with dual-field support:
- NormalizeTags: Titlecase, preserve hyphens/apostrophes, prefer punctuated versions
- NormalizeTagsSearch: Lowercase, remove punctuation for search
- NormalizeContributors: Preserve case/punctuation, prefer punctuated versions
- NormalizeContributorsSearch: Lowercase, remove punctuation for search
Key features:
- Case-insensitive deduplication using punctuation-free keys
- Punctuation preference: keeps "ACME CORP." over "acme corp"
- Handles hyphens as spaces ("non-fiction" → "non fiction" for search)
- Preserves original casing for contributors (CAPSLOCK companies)
Relates to Tags & Contributors Migration Phase 3
2026-02-08 11:03:40 -05:00
..
2026-02-07 17:59:06 -05:00
2026-02-01 16:11:47 -05:00
2026-02-07 22:53:12 -05:00
2026-02-03 16:16:14 -05:00
2026-02-08 00:43:18 -05:00
2026-02-06 12:16:13 -05:00
2026-02-01 16:21:10 -05:00
2026-02-07 19:56:52 -05:00
2026-02-07 22:53:12 -05:00
2026-02-01 16:24:58 -05:00
2026-02-08 11:03:40 -05:00