From: Bill Erickson Date: Wed, 10 Feb 2016 22:00:01 +0000 (-0500) Subject: JBAS-984 KCLS Address normalizer X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=024c1a4c10145f833fddd7866a16b2c518ed1d03;p=working%2FEvergreen.git JBAS-984 KCLS Address normalizer Signed-off-by: Bill Erickson --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Utils/KCLSNormalize.pm b/Open-ILS/src/perlmods/lib/OpenILS/Utils/KCLSNormalize.pm new file mode 100644 index 0000000000..65834b342b --- /dev/null +++ b/Open-ILS/src/perlmods/lib/OpenILS/Utils/KCLSNormalize.pm @@ -0,0 +1,47 @@ +package OpenILS::Utils::KCLSNormalize; + +sub normalize_address_street { + my ($street1, $street2) = @_; + + # Replace 'AV' with 'AVE', but only when "AV" is surrounded by space + # period, or end of line, so as not to clobber names that contain AV. + if (my $s1 = $street1) { + $s1 =~ s/\s+AV(\s|\.|$)+/ AVE /g; + $s1 =~ s/\s+ST\.(\s|$)+/ ST /g; + $s1 =~ s/(^\s*|\s*$)//g; # remove opening/trailing spaces + $street1 = $s1; + } + + # Our policy is to include the apartment / unit number in the + # stree1 value. If street2 starts with APT or UNIT, append it + # onto the end of street1 (and clear street2). + # We also replace any occurrence of APT or UNIT with a '#'. + if (my $s2 = $street2) { + if ($s2 =~ /^(APT|UNIT|#)/) { + $s2 =~ s/^(APT\.?|UNIT\.?)//g; # remove APT / UNIT + $s2 =~ s/^\s*//g; # trim leading space + if ($s2 =~ /^#/) { + # if the addr starts with a #, ensure it's followed by a space + $s2 =~ s/^#/# /g if $s2 =~ /^#[^\s]/; + } else { + # if no '#' is present to replace APT/UNIT, add it. + $s2 = "# $s2" unless $s2 =~ /^#/; + } + + # remove random "," "." "-" and extra spaces that + # occur after the initial "#". + $s2 =~ s/^#[\s,\.-]*(.*)$/# $1/g; + + if ($street1) { + $street1 .= " $s2"; + } else { + $street1 = $s2; + } + $street2 = undef; + } + } + + return ($street1, $street2); +} + +1;