Changeset 409 for trunk/gsdl/perllib
- Timestamp:
- 1999-07-21T16:58:03+12:00 (25 years ago)
- Location:
- trunk/gsdl/perllib/classify
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/classify/AZList.pm
r385 r409 51 51 52 52 my @classlist = sort {$self->{'list'}->{$a} cmp $self->{'list'}->{$b};} keys %{$self->{'list'}}; 53 my $subclasses = $self->splitlist (\@classlist);54 53 55 my ($classifyinfo); 56 57 if (scalar @$subclasses) { 58 $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList"); 59 foreach $subclass (@$subclasses) { 60 my $tempclassify = $self->get_entry($subclass->[0], "AZList"); 61 foreach $subsubOID (@{$subclass->[2]}) { 62 push (@{$tempclassify->{'contains'}}, {'OID'=>$subsubOID}); 63 } 64 push (@{$classifyinfo->{'contains'}}, $tempclassify); 65 } 66 67 } else { 68 $classifyinfo = $self->get_entry($self->{'metaname'}, "AZList"); 69 foreach $subOID (@classlist) { 70 push (@{$classifyinfo->{'contains'}}, {'OID'=>$subOID}); 71 } 72 } 73 74 return $classifyinfo; 54 return $self->splitlist (\@classlist); 75 55 } 76 56 … … 88 68 89 69 # splitlist takes an ordered list of classifications (@$classlistref) and splits it 90 # up into alphabetical sub-sections. returns a list reference each entry of which is 91 # in the form ["sub-section title", "sub-section number", [contents list]] 92 # note that the title of each classification in @$classlistref is obtained from 93 # $self->{'list'}->{$classlistref->[n]} 70 # up into alphabetical sub-sections. 94 71 sub splitlist { 95 72 my $self = shift (@_); 96 73 my ($classlistref) = @_; 97 74 my $classhash = {}; 98 my $rarr = []; 75 76 # top level 77 my $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList"); 99 78 100 79 # don't need to do any splitting if there are less than 20 classifications 101 return [] if ((scalar @$classlistref) <= 20); 102 80 if ((scalar @$classlistref) <= 20) { 81 foreach $subOID (@$classlistref) { 82 push (@{$classifyinfo->{'contains'}}, {'OID'=>$subOID}); 83 } 84 return $classifyinfo; 85 } 86 103 87 # first split up the list into separate A-Z and 0-9 classifications 104 88 foreach $classification (@$classlistref) { … … 113 97 push (@{$classhash->{$title}}, $classification); 114 98 } 115 116 99 $classhash = $self->compactlist ($classhash); 117 100 … … 128 111 } 129 112 130 my $count = 1; 131 foreach $subsection (@tmparr) { 132 push (@$rarr, [$subsection, $count, $classhash->{$subsection}]); 133 $count ++; 113 foreach $subclass (@tmparr) { 114 my $tempclassify = $self->get_entry($subclass, "AZList"); 115 foreach $subsubOID (@{$classhash->{$subclass}}) { 116 push (@{$tempclassify->{'contains'}}, {'OID'=>$subsubOID}); 117 } 118 push (@{$classifyinfo->{'contains'}}, $tempclassify); 134 119 } 135 120 136 return $ rarr;121 return $classifyinfo; 137 122 } 138 123 -
trunk/gsdl/perllib/classify/AZSectionList.pm
r391 r409 17 17 18 18 if (!defined @options || !scalar @options) { 19 die "AZ List used with no metadata name to classify by\n";19 die "AZSectionList used with no metadata name to classify by\n"; 20 20 } 21 21 … … 52 52 } 53 53 if (defined $self->{'list'}->{"$doc_OID.$thissection"}) { 54 print STDERR "WARNING: AZ List::classify called multiple times for $doc_OID\n";54 print STDERR "WARNING: AZSectionList::classify called multiple times for $doc_OID\n"; 55 55 } 56 56 $self->{'list'}->{"$doc_OID.$thissection"} = $metavalue; … … 60 60 } 61 61 62 62 63 sub get_classify_info { 63 64 my $self = shift (@_); 64 65 65 66 my @classlist = sort {$self->{'list'}->{$a} cmp $self->{'list'}->{$b};} keys %{$self->{'list'}}; 66 my $subclasses = $self->splitlist (\@classlist); 67 68 my ($classifyinfo); 69 70 if (scalar @$subclasses) { 71 $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList"); 72 foreach $subclass (@$subclasses) { 73 my $tempclassify = $self->get_entry($subclass->[0], "AZList"); 74 foreach $subsubOID (@{$subclass->[2]}) { 75 push (@{$tempclassify->{'contains'}}, {'OID'=>$subsubOID}); 76 } 77 push (@{$classifyinfo->{'contains'}}, $tempclassify); 78 } 79 80 } else { 81 $classifyinfo = $self->get_entry($self->{'metaname'}, "AZList"); 82 foreach $subOID (@classlist) { 83 push (@{$classifyinfo->{'contains'}}, {'OID'=>$subOID}); 84 } 85 } 86 87 return $classifyinfo; 67 68 return $self->splitlist (\@classlist); 88 69 } 89 70 … … 101 82 102 83 # splitlist takes an ordered list of classifications (@$classlistref) and splits it 103 # up into alphabetical sub-sections. returns a list reference each entry of which is 104 # in the form ["sub-section title", "sub-section number", [contents list]] 105 # note that the title of each classification in @$classlistref is obtained from 106 # $self->{'list'}->{$classlistref->[n]} 84 # up into alphabetical sub-sections. 107 85 sub splitlist { 108 86 my $self = shift (@_); 109 87 my ($classlistref) = @_; 110 88 my $classhash = {}; 111 my $rarr = []; 89 90 # top level 91 my $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList"); 112 92 113 93 # don't need to do any splitting if there are less than 20 classifications 114 return [] if ((scalar @$classlistref) <= 20); 115 94 if ((scalar @$classlistref) <= 20) { 95 foreach $subOID (@$classlistref) { 96 push (@{$classifyinfo->{'contains'}}, {'OID'=>$subOID}); 97 } 98 return $classifyinfo; 99 } 100 116 101 # first split up the list into separate A-Z and 0-9 classifications 117 102 foreach $classification (@$classlistref) { … … 121 106 if ($title =~ /^[0-9]$/) {$title = '0-9';} 122 107 elsif ($title !~ /^[A-Z]$/) { 123 print STDERR "AZ List: WARNING $classification has badly formatted title ($title)\n";108 print STDERR "AZSectionList: WARNING $classification has badly formatted title ($title)\n"; 124 109 } 125 110 $classhash->{$title} = [] unless defined $classhash->{$title}; 126 111 push (@{$classhash->{$title}}, $classification); 127 112 } 128 129 113 $classhash = $self->compactlist ($classhash); 130 114 … … 141 125 } 142 126 143 my $count = 1; 144 foreach $subsection (@tmparr) { 145 push (@$rarr, [$subsection, $count, $classhash->{$subsection}]); 146 $count ++; 147 } 148 149 return $rarr; 127 foreach $subclass (@tmparr) { 128 my $tempclassify = $self->get_entry($subclass, "AZList"); 129 foreach $subsubOID (@{$classhash->{$subclass}}) { 130 push (@{$tempclassify->{'contains'}}, {'OID'=>$subsubOID}); 131 } 132 push (@{$classifyinfo->{'contains'}}, $tempclassify); 133 } 134 135 return $classifyinfo; 150 136 } 151 137
Note:
See TracChangeset
for help on using the changeset viewer.