Changeset 545 for trunk/gsdl/perllib/classify/List.pm
- Timestamp:
- 1999-09-08T12:27:29+12:00 (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/perllib/classify/List.pm
r537 r545 27 27 # options are: 28 28 # metadata=Metaname -- (optional) all documents with Metaname metadata 29 # will be included in list, list will be sorted 30 # by this element. if not included all documents 31 # will be included in list in build (random) order 29 # will be included in list. if not included all documents 30 # will be included in list. 31 # sort=Meta -- (optional) sort documents in list alphabetically by 32 # Meta. by default it will sort by Metaname, if neither 33 # are set documents will be in build (random) order. 34 # Meta may be Filename to sort by original filename or 35 # nosort to force not to sort 32 36 # title=Title -- (optional) the title field for this classification. 33 37 # if not included title field will be Metaname. … … 42 46 43 47 my $list = []; 44 my ($metaname, $title );48 my ($metaname, $title, $sortname); 45 49 46 50 foreach $option (@options) { … … 50 54 } elsif ($option =~ /^title=(.*)$/i) { 51 55 $title = $1; 56 } elsif ($option =~ /^sort=(.*)$/i) { 57 $sortname = $1; 52 58 } 53 59 } … … 61 67 } 62 68 69 if (defined $sortname && $sortname =~ /^nosort$/i) { 70 $sortname = undef; 71 } elsif (!defined $sortname && defined $metaname) { 72 $sortname = $metaname; 73 } 74 63 75 return bless { 64 76 'list'=>$list, 65 77 'metaname' => $metaname, 66 'title' => $title 78 'title' => $title, 79 'sortname' => $sortname 67 80 }, $class; 68 81 } … … 71 84 my $self = shift (@_); 72 85 73 if (defined $self->{' metaname'}) {86 if (defined $self->{'sortname'}) { 74 87 $self->{'list'} = {}; 75 88 } else { … … 84 97 my $doc_OID = $doc_obj->get_OID(); 85 98 86 if (defined $self->{'metaname'}) { 87 my $metavalue = $doc_obj->get_metadata_element ($doc_obj->get_top_section(), 88 $self->{'metaname'}); 89 if (defined $metavalue) { 90 if ($self->{'metaname'} eq 'Creator') { 91 &sorttools::format_string_name_english (\$metavalue); 99 my $sortmeta = ""; 100 if (defined $self->{'sortname'}) { 101 if ($self->{'sortname'} =~ /^filename$/i) { 102 $sortmeta = $doc_obj->get_source_filename(); 103 } else { 104 $sortmeta = $doc_obj->get_metadata_element($doc_obj->get_top_section(), 105 $self->{'sortname'}); 106 if ($self->{'sortname'} eq "Creator") { 107 &sorttools::format_string_name_english (\$sortmeta); 92 108 } else { 93 &sorttools::format_string_english (\$ metavalue);109 &sorttools::format_string_english (\$sortmeta); 94 110 } 111 } 112 $sortmeta = "" unless defined $sortmeta; 113 114 if (defined $self->{'metaname'}) { 115 my $metavalue = $doc_obj->get_metadata_element ($doc_obj->get_top_section(), 116 $self->{'metaname'}); 117 if (defined $metavalue) { 118 if (defined $self->{'list'}->{$doc_OID}) { 119 print STDERR "WARNING: List::classify called multiple times for $doc_OID\n"; 120 } 121 $self->{'list'}->{$doc_OID} = $sortmeta; 122 } 123 } else { 95 124 if (defined $self->{'list'}->{$doc_OID}) { 96 print STDERR "metavalue: $metavalue\n";97 print STDERR "title: $self->{'title'}\n";98 125 print STDERR "WARNING: List::classify called multiple times for $doc_OID\n"; 99 126 } 100 $self->{'list'}->{$doc_OID} = $ metavalue;127 $self->{'list'}->{$doc_OID} = $sortmeta; 101 128 } 102 129 } else { 103 push (@{$self->{'list'}}, $doc_OID); 130 if (defined $self->{'metaname'}) { 131 my $metavalue = $doc_obj->get_metadata_element ($doc_obj->get_top_section(), 132 $self->{'metaname'}); 133 if (defined $metavalue) { 134 push (@{$self->{'list'}}, $doc_OID); 135 } 136 } else { 137 push (@{$self->{'list'}}, $doc_OID); 138 } 104 139 } 105 140 } … … 108 143 my $self = shift (@_); 109 144 110 my $contains = "";111 145 my @list = (); 112 if (defined $self->{' metaname'}) {146 if (defined $self->{'sortname'}) { 113 147 if (keys %{$self->{'list'}}) { 114 148 @list = sort {$self->{'list'}->{$a}
Note:
See TracChangeset
for help on using the changeset viewer.