Revision history for Geo-Address-Parser-Country
0.04 Wed May 6 11:15:09 EDT 2026
[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.
0.03 Tue May 5 07:38:37 EDT 2026
[Bug fixes]
- Fixed: NL (Newfoundland and Labrador) was resolving to Netherlands
because the %DIRECT table entry 'nl' shadowed the Locale::CA
province-code lookup at step 4. Removed 'nl' from %DIRECT.
- Fixed: _geonames_lookup() would die under strict refs when the
GeoNames search returned a plain scalar instead of an arrayref or
hashref. Added ref() guard before the hash dereference.
- Fixed: _geonames_lookup() would die via Return::Set schema
validation when countryName was itself a reference (e.g. a nested
hashref). Added !ref() guard before returning the country name.
- Fixed: step 6 (Australian state code lookup) used the raw,
un-normalised component as the hash key, making the lookup
case-sensitive unlike steps 2-5. uc($component) now applied
consistently. (TODO: pending release)
[Enhancements]
- Added Object::Configure support to new(), allowing locale objects
to be supplied via environment variables or a config file rather
than always being passed explicitly at construction time.
- Removed the can('new') requirement from the $NEW_SCHEMA locale
object entries. The locale objects are used as data containers,
not factories, so this check was incorrect and prevented plain
blessed hashrefs from being used as stubs.
- Removed the can('search') requirement from the geonames schema
entry. Geo::GeoNames dispatches via AUTOLOAD so can('search')
returns false at the Perl level even though ->search() works at
runtime. The check is commented out pending a fix to
Geo::GeoNames itself.
- NU (Nunavut) now resolves correctly to Canada following an update
to Locale::CA.
[Dependencies]
- Added: Object::Configure
- Minimum ExtUtils::MakeMaker bumped to 6.64 for TEST_REQUIRES
support.
[Tests]
- Added comprehensive test suite: function.t (white-box), unit.t
(black-box API), integration.t (end-to-end with real locale
packages), edge_cases.t (destructive and boundary conditions), and
extended_tests.t (coverage and LCSAJ gap-filling).
- Identified and documented two remaining known-bug TODO items:
step 6 AU code case-sensitivity and the %DIRECT hashref
warning-absent dead branch.
0.02 Sat Apr 11 08:24:22 EDT 2026
Fix CI
0.01 Sat Apr 11 08:02:14 EDT 2026
Initial release