Changeset 409 for trunk/gsdl/perllib


Ignore:
Timestamp:
1999-07-21T16:58:03+12:00 (25 years ago)
Author:
sjboddie
Message:

Tidied things up a bit

Location:
trunk/gsdl/perllib/classify
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/classify/AZList.pm

    r385 r409  
    5151
    5252    my @classlist = sort {$self->{'list'}->{$a} cmp $self->{'list'}->{$b};} keys %{$self->{'list'}};
    53     my $subclasses = $self->splitlist (\@classlist);
    5453
    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);
    7555}
    7656
     
    8868
    8969# 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.
    9471sub splitlist {
    9572    my $self = shift (@_);
    9673    my ($classlistref) = @_;
    9774    my $classhash = {};
    98     my $rarr = [];
     75
     76    # top level
     77    my $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList");
    9978
    10079    # 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   
    10387    # first split up the list into separate A-Z and 0-9 classifications
    10488    foreach $classification (@$classlistref) {
     
    11397    push (@{$classhash->{$title}}, $classification);
    11498    }
    115 
    11699    $classhash = $self->compactlist ($classhash);
    117100
     
    128111    }
    129112
    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);
    134119    }
    135120
    136     return $rarr;
     121    return $classifyinfo;
    137122}
    138123
  • trunk/gsdl/perllib/classify/AZSectionList.pm

    r391 r409  
    1717
    1818    if (!defined @options || !scalar @options) {
    19     die "AZList used with no metadata name to classify by\n";
     19    die "AZSectionList used with no metadata name to classify by\n";
    2020    }
    2121
     
    5252        }
    5353        if (defined $self->{'list'}->{"$doc_OID.$thissection"}) {
    54         print STDERR "WARNING: AZList::classify called multiple times for $doc_OID\n";
     54        print STDERR "WARNING: AZSectionList::classify called multiple times for $doc_OID\n";
    5555        }
    5656        $self->{'list'}->{"$doc_OID.$thissection"} = $metavalue;
     
    6060}
    6161
     62
    6263sub get_classify_info {
    6364    my $self = shift (@_);
    6465
    6566    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);
    8869}
    8970
     
    10182
    10283# 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.
    10785sub splitlist {
    10886    my $self = shift (@_);
    10987    my ($classlistref) = @_;
    11088    my $classhash = {};
    111     my $rarr = [];
     89
     90    # top level
     91    my $classifyinfo = $self->get_entry ($self->{'metaname'}, "AZList");
    11292
    11393    # 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   
    116101    # first split up the list into separate A-Z and 0-9 classifications
    117102    foreach $classification (@$classlistref) {
     
    121106    if ($title =~ /^[0-9]$/) {$title = '0-9';}
    122107    elsif ($title !~ /^[A-Z]$/) {
    123         print STDERR "AZList: WARNING $classification has badly formatted title ($title)\n";
     108        print STDERR "AZSectionList: WARNING $classification has badly formatted title ($title)\n";
    124109    }
    125110    $classhash->{$title} = [] unless defined $classhash->{$title};
    126111    push (@{$classhash->{$title}}, $classification);
    127112    }
    128 
    129113    $classhash = $self->compactlist ($classhash);
    130114
     
    141125    }
    142126
    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;
    150136}
    151137
Note: See TracChangeset for help on using the changeset viewer.