This patch fix the cn_sort sorting accurace described by Joy Nelson.
Testing:
I) Appy the bug 12424 patch
Before applying this patch:
0) Select 3 items.
1) Edit the items selected
2) Change "Full call number" option to 971/P23w/v.1-2/pt.8, 971.01/P23w/v.1-2/pt.6-7 and 971.01/P23w/v.1-2/pt.7
3) Save changes
4) Valide 971P23WV_12PT_8_000000000000000, 971_000000000000000_01P23WV_12PT_67 and 971_01P23WV_12PT_700000000000000 (table items - cn_sort column).
After applying this patch:
5) Edit again the item selected in 0
3) Save changes
4) Valide 971_000000000000000_P23W_V_12_PT_8, 971_010000000000000_P23W_V_12_PT_67, 971_010000000000000_P23W_V_12_PT_7 (table items - cn_sort column).
Signed-off-by: Paola Rossi <paola.rossi@cineca.it>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
my $init = uc "$cn_class $cn_item";
$init =~ s/^\s+//;
$init =~ s/\s+$//;
+ $init =~ s/\// /g;
$init =~ s!/!!g;
$init =~ s/^([\p{IsAlpha}]+)/$1 /;
my @tokens = split /\.|\s+/, $init;
$first_digit_group_idx = $i;
}
if (2 == $digit_group_count) {
- $tokens[$i] = sprintf("%-15.15s", $tokens[$i]);
- $tokens[$i] =~ tr/ /0/;
+ if ($i - $first_digit_group_idx == 1) {
+ $tokens[$i] = sprintf("%-15.15s", $tokens[$i]);
+ $tokens[$i] =~ tr/ /0/;
+ } else {
+ $tokens[$first_digit_group_idx] .= '_000000000000000'
+ }
}
}
}