Skip to content

Commit

Permalink
Properly trim and normalize whitespace
Browse files Browse the repository at this point in the history
  • Loading branch information
ctfliblime committed Oct 17, 2011
1 parent 8587e19 commit e298ec8
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 57 deletions.
2 changes: 2 additions & 0 deletions lib/Text/SuDocs.pm
Expand Up @@ -52,6 +52,8 @@ sub parse {
chomp($original);
croak 'Invalid characters' if $original =~ qr{[^\p{IsAlnum}\s:/\-.<>]};
$original = uc $original;
$original =~ s{^\s+|\s+$}{}g;
$original =~ s{\s+}{ }g;

if ($original ~~ [qw(XJH XJS)]) {
$self->agency($original);
Expand Down
24 changes: 16 additions & 8 deletions t/004-normal.t
Expand Up @@ -28,7 +28,7 @@ my @accurate_strings = (
agency=>'EP', subagency=>'1', series=>'23',
relatedseries=>undef, document=>'91-44'},

{original=>'C 51. 11: EN 8/995',
{original=>'C 51. 11: EN 8/995',
sortable=>'C_00000051.00000011:EN_00000008/00000995',
normal=>'C 51.11:EN 8/995', stem=>'C 51.11',
agency=>'C', subagency=>'51', series=>'11',
Expand All @@ -40,13 +40,7 @@ my @accurate_strings = (
agency=>'C', subagency=>'51', series=>'11',
relatedseries=>undef, document=>'23'},

{original=>'C 51. 11/8: 995-96',
sortable=>'C_00000051.00000011/00000008:00000995-00000096',
normal=>'C 51.11/8:995-96', stem=>'C 51.11/8',
agency=>'C', subagency=>'51', series=>'11',
relatedseries=>'8', document=>'995-96'},

{original=>'T 63.209/8-3:994/1',
{original=>'T 63.209/8-3:994/1 ',
sortable=>'T_00000063.00000209/00000008-00000003:00000994/00000001',
normal=>'T 63.209/8-3:994/1', stem=>'T 63.209/8-3',
agency=>'T', subagency=>'63', series=>'209',
Expand Down Expand Up @@ -100,18 +94,32 @@ my @accurate_strings = (
agency=>'HE', subagency=>'1', series=>'2',
relatedseries=>undef, document=>'AC 6/7'},

{original=>' HE 1. 2:AC 6/7 ',
sortable=>'HE_00000001.00000002:AC_00000006/00000007',
normal=>'HE 1.2:AC 6/7', stem=>'HE 1.2',
agency=>'HE', subagency=>'1', series=>'2',
relatedseries=>undef, document=>'AC 6/7'},

{original=>'XJH',
sortable=>'XJH',
normal=>'XJH', stem=>'XJH',
agency=>'XJH', subagency=>undef, series=>undef,
relatedseries=>undef, document=>undef},

{original=>' XJH ',
sortable=>'XJH',
normal=>'XJH', stem=>'XJH',
agency=>'XJH', subagency=>undef, series=>undef,
relatedseries=>undef, document=>undef},

{original=>'XJS',
sortable=>'XJS',
normal=>'XJS', stem=>'XJS',
agency=>'XJS', subagency=>undef, series=>undef,
relatedseries=>undef, document=>undef},

);

subtest 'Normalization' => sub {
for my $t (@accurate_strings) {
subtest "Parsing $t->{original}" => sub {
Expand Down
98 changes: 49 additions & 49 deletions t/010-bulk.t
Expand Up @@ -36,14 +36,14 @@ HE 20.8315:20
HE 20.8315:18
HE 20.8315:23
HE 20.8315:22
HE 20.8315:24
HE 20.8315:24
HE 20.8315:25
HE 20.8315:27
HE 20.8315:26
HE 20.8315:27
HE 20.8315:26
HE 20.8315:28
HE 20.8315:29
HE 20.8315:30
HE 20.8315:31
HE 20.8315:31
HE 20.8315:33
HE 20.8315:35
Y 3.EQ 2:1/
Expand Down Expand Up @@ -164,7 +164,7 @@ Y 3.T 22/2:2 In 8/3/sum.
Y 3.T 22/2:2 P 56/2/sum.
Y 3.T 22/2:2 Su 7/2
Y 3.T 22/2:2 M 66/sum.
Y 3.T 22/2:2 An 5/sum.
Y 3.T 22/2:2 An 5/sum.
Y 3.T 22/2:2 C82/2/CASE 36
Y 3.T 22/2:2 Oc 2/4/sum.
Y 3.T 22/2:2 Se 6
Expand Down Expand Up @@ -196,7 +196,7 @@ Y 3.T 22/2:2 M 66/2/sum.
Y 3.T 22/2:2 T 22/3/987
Y 3.T 22/2:2 W 28/2/sum.
Y 3.T 22/2:2 Ag 3/991-95
Y 3.T 22/2:2 Au 8/5
Y 3.T 22/2:2 Au 8/5
Y 3.T 22/2:2 C 17
Y 3.T 22/2:2 C 28
Y 3.T 22/2:2 Et 3
Expand All @@ -217,7 +217,7 @@ Y 3.T 22/2:2 T 22/24/sum.
Y 3.T 22/2:2 Oi 5/8
Y 3.T 22/2:2 In 8/4/sum.
Y 3.T 22/2:2 L 62/sum.
Y 3.T 22/2:2 D 36/sum.
Y 3.T 22/2:2 D 36/sum.
Y 3.T 22/2:2 St 2/sum.
Y 3.T 22/2:2 M 33/2/sum.
Y 3.T 22/2:2 Su 7/4/sum.
Expand Down Expand Up @@ -253,7 +253,7 @@ Y 3.T 22/2:2 N 39/2/sum.
Y 3.T 22/2:2 P 87/develo.
Y 3.T 22/2:2 M 66/3/sum.
Y 3.T 22/2:2 T 68
Y 3.T 22/2:2 R 13
Y 3.T 22/2:2 R 13
Y 3.T 22/2:2 C 76
Y 3.T 22/2:2 R 13/2
Y 3.T 22/2:2 T 68/3
Expand All @@ -264,60 +264,60 @@ Y 3.T 22/2:2 B 96
Y 3.T 22/2:2/2003012308
Y 3.T 22/2:2/T 67/V.1-12
Y 3.T 22/2:2 ST 6
Y 3.T 22/2:2 In 3
Y 3.T 22/2:2 In 3
Y 3.T 22/2:2/2003012366
Y 3.T 22/2:2 F 53
Y 3.T 22/2:2 F 53
Y 3.T 22/2:2 N 88
Y 3.T 22/2:2 F 73/3
Y 3.T 22/2:2 F 73/4
Y 3.T 22/2:2 F 73/4
Y 3.T 22/2:2 C 16
Y 3.T 22/2:2 M 46/2
Y 3.T 22/2:2/2003012239
Y 3.T 22/2:2 OI 5/4
Y 3.T 22/2:2 OI 5/4
Y 3.T 22/2:2 F 73
Y 3.T 22/2:2 R 13/3
Y 3.T 22/2:2 R 31
Y 3.T 22/2:2 R 13/3
Y 3.T 22/2:2 R 31
Y 3.T 22/2:2 OC 2/pt.1
Y 3.T 22/2:2/SO 4/V.1-2
Y 3.T 22/2:2 D 39
Y 3.T 22/2:2 D 39
Y 3.T 22/2:2 IN 8
Y 3.T 22/2:2 C 73/3
Y 3.T 22/2:2 M 46/3
Y 3.T 22/2:2 M 46/3
Y 3.T 22/2:2 N 95
Y 3.T 22/2:2/2003012580
Y 3.T 22/2:2 H 34
Y 3.T 22/2:2 F 73/5
Y 3.T 22/2:2 ED 8
Y 3.T 22/2:2 C 86
Y 3.T 22/2:2 L 44
Y 3.T 22/2:2 C 86
Y 3.T 22/2:2 L 44
Y 3.T 22/2:2 AU 8/V.1-3
Y 3.T 22/2:2 F 95
Y 3.T 22/2:2 P 93/979
Y 3.T 22/2:2/2003012325
Y 3.T 22/2:2 N 88/2
Y 3.T 22/2:2 H 34/2
Y 3.T 22/2:2 D 84/2/V.1
Y 3.T 22/2:2 N 88/2
Y 3.T 22/2:2 H 34/2
Y 3.T 22/2:2 D 84/2/V.1
Y 3.T 22/2:2 M 41/3/V.1
Y 3.T 22/2:2 IN 6
Y 3.T 22/2:2 EN 2/7/V.1
Y 3.T 22/2:2 F 73/6
Y 3.T 22/2:2 V 13
Y 3.T 22/2:2 M 56
Y 3.T 22/2:2 F 73/6
Y 3.T 22/2:2 V 13
Y 3.T 22/2:2 M 56
Y 3.T 22/2:2 C 27
Y 3.T 22/2:2/2003012473
Y 3.T 22/2:2 AU 8/2/V.1-2
Y 3.T 22/2:2 C 73/4
Y 3.T 22/2:2 C 73/4
Y 3.T 22/2:2 T 67
Y 3.T 22/2:2 C 76/2
Y 3.T 22/2:2 T 68/4
Y 3.T 22/2:2 C 76/2
Y 3.T 22/2:2 T 68/4
Y 3.T 22/2:2 EN 2/8/PT.1-
Y 3.T 22/2:2 P 56
Y 3.T 22/2:2 EX 7
Y 3.T 22/2:2 P 56
Y 3.T 22/2:2 EX 7
Y 3.T 22/2:2/2003012313
Y 3.T 22/2:2 T 22/2
Y 3.T 22/2:2 OI 5/V.1-2
Y 3.T 22/2:2 R 13/4
Y 3.T 22/2:2 OC 2/2
Y 3.T 22/2:2 OC 2/2
Y 3.T 22/2:2 C 82/NO.-
Y 3.T 22/2:2/2003012291
Y 3.T 22/2:2 C 73/3/UPDATE
Expand Down Expand Up @@ -371,7 +371,7 @@ Y 3.T 22/2:2 IN 2/2
Y 3.T 22/2:2 C 82/2/CASE 23
Y 3.T 22/2:2 W 29/2/FOREIGN
Y 3.T 22/2:2 P 69
Y 3.T 22/2:2 W 85/V.1-2
Y 3.T 22/2:2 W 85/V.1-2
Y 3.T 22/2:2 W 29/2
Y 3.T 22/2:2 T 22/6/NO.1
Y 3.T 22/2:2 EL 2/3
Expand Down Expand Up @@ -430,7 +430,7 @@ Y 3.T 22/2:2 B 52/2
Y 3.T 22/2:2 EL 2/5
Y 3.T 22/2:2 H 75
Y 3.T 22/2:2 R
Y 3.T 22/2:2 AN 5
Y 3.T 22/2:2 AN 5
Y 3.T 22/2:2 T 22/15
Y 3.T 22/2:2 P 56/2
Y 3.T 22/2:2 F 31/2
Expand Down Expand Up @@ -465,7 +465,7 @@ Y 3.T 22/2:2 C 82/2/abst./
Y 3.T 22/2:2 D 84/4
Y 3.T 22/2:2 B 52/3
Y 3.T 22/2:2 T 31
Y 3.T 22/2:2 Au 8/5/v.1
Y 3.T 22/2:2 Au 8/5/v.1
Y 3.T 22/2:2 W 28/2
Y 3.T 22/2:2 R 31/2
Y 3.T 22/2:2 T 67/3
Expand Down Expand Up @@ -589,7 +589,7 @@ Y 3.T 22/2:2 C 16/3/sum.
Y 3.T 22/2:2 W 89/sum.
Y 3.T 22/2:2 C 16/4
Y 3.T 22/2:2 H 34/5
Y 3.T 22/2:2 B 43
Y 3.T 22/2:2 B 43
Y 3.T 22/2:2 H 34/5/sum.
Y 3.T 22/2:2 G 21/5
Y 3.T 22/2:2 OI 5/10
Expand Down Expand Up @@ -772,7 +772,7 @@ Y 3.T 22/2:2 G 28/5/v.1-3/cont.
Y 3.T 22/2:2 EL 2/11/V.1-
Y 3.T 22/2:2 B 57/10
Y 3.T 22/2:2 C 99/SUM.
Y 3.T 22/2:2 G 82/SUMM.
Y 3.T 22/2:2 G 82/SUMM.
Y 3.T 22/2:2 Al 9/sum.
Y 3.T 22/2:2 AG 8/6/SUM.
Y 3.T 22/2:2 M 57/SUM.
Expand All @@ -792,10 +792,10 @@ Y 3.T 22/2:2 C 99
Y 3.T 22/2:2 C 64/SUM.
Y 3.T 22/2:2 C 42/2
Y 3.T 22/2:2 D 49
Y 3.T 22/2:2 AD 9/2/SUMM.
Y 3.T 22/2:2 AD 9/2/SUMM.
Y 3.T 22/2:2 P 96
Y 3.T 22/2:2 AD 9/2
Y 3.T 22/2:2 N 28
Y 3.T 22/2:2 AD 9/2
Y 3.T 22/2:2 N 28
Y 3.T 22/2:2 F 76
Y 3.T 22/2:2 D 46/3
Y 3.T 22/2:2 D 46/4
Expand All @@ -814,7 +814,7 @@ Y 3.T 22/2:2 IN 2/6
Y 3.T 22/2:2 IN 2/8/SUM.
Y 3.T 22/2:2 EN 2/17
Y 3.T 22/2:2 H 34/8
Y 3.T 22/2:2 C 76/7
Y 3.T 22/2:2 C 76/7
Y 3.T 22/2:2 P 96/2
Y 3.T 22/2:2 T 75/3/SUM.
Y 3.T 22/2:2 L 62/V.2/PT.2/CLINIC
Expand All @@ -825,10 +825,10 @@ Y 3.T 22/2:2 P 84
Y 3.T 22/2:2 F 95/5/SUM.
Y 3.T 22/2:2 SU 1/SUM.
Y 3.T 22/2:2 B 52/10
Y 3.T 22/2:2 M 91/2/SUM.
Y 3.T 22/2:2 M 91/2/SUM.
Y 3.T 22/2:2 P 84/2
Y 3.T 22/2:2 EN 2/18
Y 3.T 22/2:2 AL 1 S
Y 3.T 22/2:2 AL 1 S
Y 3.T 22/2:2:C 61/3
Y 3.T 22/2:2 SA 8
Y 3.T 22/2:2 SA 1/4/SUM.
Expand Down Expand Up @@ -861,7 +861,7 @@ Y 3.T 22/2:2 C 82/NO.2/CASE 12
Y 3.T 22/2:2 C 82/NO.2/CASE 9
Y 3.T 22/2:2 M 56/2
Y 3.T 22/2:2 C 16/3
Y 3.T 22/2:2 EL 2/14
Y 3.T 22/2:2 EL 2/14
Y 3.T 22/2:2 W 89
Y 3.T 22/2:2 D 84/5
Y 3.T 22/2:2 M 46/14
Expand All @@ -874,7 +874,7 @@ Y 3.T 22/2:2 D 14
Y 3.T 22/2:2 EN 2/13
Y 3.T 22/2:2 W 28/3
Y 3.T 22/2:2 AM 3/3
Y 3.T 22/2:2 T 22/26
Y 3.T 22/2:2 T 22/26
Y 3.T 22/2:2 T 68/7
Y 3.T 22/2:2 T 27
Y 3.T 22/2:2 EN 2/14
Expand Down Expand Up @@ -924,7 +924,7 @@ Y 3.T 22/2:2 G 51/4
Y 3.T 22/2:2 R 28
Y 3.T 22/2:2 P 49
Y 3.T 22/2:2 P 94
Y 3.T 22/2:2 T 68/8
Y 3.T 22/2:2 T 68/8
Y 3.T 22/2:2 P 95
Y 3.T 22/2:2 C 61/2/V.1-2
Y 3.T 22/2:2 W 37/3
Expand All @@ -945,7 +945,7 @@ Y 3.T 22/2:2 AV 5
Y 3.T 22/2:2 C 66/2
Y 3.T 22/2:2 ST 9
Y 3.T 22/2:2 P 43/4
Y 3.T 22/2:2 P 93/2
Y 3.T 22/2:2 P 93/2
Y 3.T 22/2:2 SP 1/4
Y 3.T 22/2:2 SA 1/4/REPT.
Y 3.T 22/2:2 W 74
Expand All @@ -970,7 +970,7 @@ Y 3.T 22/2:2 M 77
Y 3.T 22/2:2 AD 7/2/V.1-3
Y 3.T 22/2:2 H 88/3-2
Y 3.T 22/2:2 AD 9/4
Y 3.T 22/2:2/AG 8/6
Y 3.T 22/2:2/AG 8/6
Y 3.T 22/2:2 AG 8/6/SUM.
Y 3.T 22/2:2 AL 5
Y 3.T 22/2:2 AL 9/SUM.
Expand All @@ -979,7 +979,7 @@ Y 3.T 22/2:2 AM 3/ECON.
Y 3.T 22/2:2 AS 7/2
Y 3.T 22/2:2 AU 8/3/SUM.
Y 3.T 22/2:2 B 57/10
Y 3.T 22/2:2 B 43
Y 3.T 22/2:2 B 43
Y 3.T 22/2:2 C 16/2
Y 3.T 22/2:2 C 23
Y 3.T 22/2:2 C 42
Expand Down Expand Up @@ -1020,7 +1020,7 @@ Y 3.T 22/2:2 P 87/INFLUE.
Y 3.T 22/2:2 P 87/SUPPORT
Y 3.T 22/2:2 P 87/TECH.
Y 3.T 22/2:2 P 96
Y 3.T 22/2:2 R 24
Y 3.T 22/2:2 R 24
Y 3.T 22/2:2 SE 2
Y 3.T 22/2:2 SP 1/2
Y 3.T 22/2:2 SU 7/5
Expand All @@ -1034,7 +1034,7 @@ Y 3.T 22/2:2 T 67/5
Y 3.T 22/2:2 T 68/6/SUM.
Y 3.T 22/2:2 T 75/3/SUM.
Y 3.T 22/2:2 W 28/2/ECO.
Y 3.T 22/2:2 W 55
Y 3.T 22/2:2 W 55
Y 3.T 22/2:2 W 85/2
Y 3.T 22/2:2 G 82
Y 3.T 22/2:2 G 21
Expand Down

0 comments on commit e298ec8

Please sign in to comment.