@@ -, +, @@ --- C4/ClassSortRoutine/LCC.pm | 19 ++++++------------- t/ClassSortRoutine_LCC.t | 12 ++++++------ 2 files changed, 12 insertions(+), 19 deletions(-) --- a/C4/ClassSortRoutine/LCC.pm +++ a/C4/ClassSortRoutine/LCC.pm @@ -1,6 +1,7 @@ package C4::ClassSortRoutine::LCC; # Copyright (C) 2007 LibLime +# Copyright (C) 2012 Equinox Software, Inc. # # This file is part of Koha. # @@ -19,6 +20,7 @@ package C4::ClassSortRoutine::LCC; use strict; use warnings; +use Library::CallNumber::LC; use vars qw($VERSION); @@ -50,19 +52,10 @@ sub get_class_sort_key { $cn_class = '' unless defined $cn_class; $cn_item = '' unless defined $cn_item; - my $key = uc "$cn_class $cn_item"; - $key =~ s/^\s+//; - $key =~ s/\s+$//; - $key =~ s/^[^\p{IsAlnum}\s.]//g; - $key =~ s/^([A-Z]+)/$1 /; - $key =~ s/(\.[A-Z])/ $1/g; - # handle first digit group - $key =~ s/(\d+)/sprintf("%-05.5d", $1)/xe; - $key =~ s/\s+/_/g; - $key =~ s/\./_/g; - $key =~ s/__/_/g; - $key =~ s/[^\p{IsAlnum}_]//g; - + my $call_number = Library::CallNumber::LC->new(uc "$cn_class $cn_item"); + return '' unless defined $call_number; + my $key = $call_number->normalize(); + $key = '' unless defined $key; return $key; } --- a/t/ClassSortRoutine_LCC.t +++ a/t/ClassSortRoutine_LCC.t @@ -14,17 +14,17 @@ BEGIN { #Obvious cases is(C4::ClassSortRoutine::LCC::get_class_sort_key(), "", "No arguments returns an empty string"); -is(C4::ClassSortRoutine::LCC::get_class_sort_key('a','b'), "A_B", "Arguments 'a','b' return 'A_B'"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key('a','b'), "A B", "Arguments 'a','b' return 'A B'"); #spaces in arguements -is(C4::ClassSortRoutine::LCC::get_class_sort_key(' ','b'), "B_", "Arguments ' ','b' return 'B_'"); -is(C4::ClassSortRoutine::LCC::get_class_sort_key('a',' '), "A_", "Arguments 'a',' ' return 'A_'"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key(' ','b'), "B", "Arguments ' ','b' return 'B'"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key('a',' '), "A", "Arguments 'a',' ' return 'A'"); is(C4::ClassSortRoutine::LCC::get_class_sort_key(' ',' '), "", "Arguments ' ',' ' return ''"); #'funky cases' based on regex in code -is(C4::ClassSortRoutine::LCC::get_class_sort_key('.','b'), "_B", "Arguments '.','b' return '_B'"); -is(C4::ClassSortRoutine::LCC::get_class_sort_key('....','........'), "_______", "Arguments '....','........' return '_______'"); -is(C4::ClassSortRoutine::LCC::get_class_sort_key('.','.'), "__", "Arguments '.','.' return '__'"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key('.','b'), "", "Arguments '.','b' return ''"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key('....','........'), "", "Arguments '....','........' return ''"); +is(C4::ClassSortRoutine::LCC::get_class_sort_key('.','.'), "", "Arguments '.','.' return ''"); # list of example call numbers -- these # are intentionally in the _reverse_ of --