Changes for version 0.04 - 2026-05-06

  • Enhancements
    • resolve() now accepts place as the only required argument. The component (last comma-separated token) is extracted automatically when not supplied explicitly. Existing callers passing component explicitly are unaffected.
    • Added normalise_place() stub. The method accepts a place string and will eventually insert missing commas before country and state names in raw uncleaned input. Currently returns the place string unchanged. Full POD, input/output schemas, and test coverage are in place ahead of implementation.
  • Bug fixes
    • Fixed trailing whitespace being included in the auto-extracted component. The extraction regex now uses a non-greedy quantifier ([^,]+?) so trailing spaces are trimmed cleanly before resolution begins.
    • Fixed "Wide character in print" noise in edge_cases.t output caused by em dash characters in subtest names becoming decoded Unicode after adding "use utf8". Fixed by adding "use open qw(:std :utf8)" to bind stdout to UTF-8.
    • Fixed "can't be decoded" failures in Params::Validate::Strict on Perl 5.18 for Unicode wide-character inputs (NBSP, EM SPACE, Arabic script) in edge_cases.t. Fixed by adding "use utf8" to the test file and SKIP guards for Perl < 5.20.
    • Fixed NU (Nunavut) test failure on systems with Locale::CA 0.06, which predates the addition of NU. The integration and edge_cases tests now check Locale::CA->VERSION at runtime and skip gracefully on older installs.
    • Bump minumum Locale::CA to fix https://www.cpantesters.org/cpan/report/ebaa0a06-37fc-11f1-acb9-eb813c3f718f
  • Tests
    • function.t: added white-box subtests for component auto-extraction (two-segment, three-segment, no-comma, trailing-whitespace, explicit-override, US state) and normalise_place() schema and return-value invariants.
    • unit.t: added black-box subtests for the simple resolve() form and all normalise_place() API contract assertions. Plan count updated to 56.
    • integration.t: added end-to-end subtests for the simple resolve() form with real genealogy place strings and the normalise_place() -> resolve() pipeline.
    • Added six targeted regression subtests to edge_cases.t covering the above CPAN Testers failures, with report reference for the Unicode issue. These will catch recurrence if Perl or Params::Validate::Strict behaviour changes in future.

Documentation

Modules

Resolve a place string component to a canonical country name