Ignore:
Timestamp:
2005-07-06T15:27:45+12:00 (19 years ago)
Author:
kjdon
Message:

Jeffrey's new parsing modifications, committed approx 6 July, 15.16

File:
1 edited

Legend:

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

    r8852 r10218  
    4444    'desc' => "{BasClas.buttonname}",
    4545    'type' => "string",
    46     'deft' => "{BasClas.metadata.deft}",
     46#   'deft' => "{BasClas.metadata.deft}",
    4747    'reqd' => "no" },
    4848      { 'name' => "sort",
    4949    'desc' => "{List.sort}",
    5050    'type' => "string",
    51     'deft' => "{BasClas.metadata.deft}",
     51#   'deft' => "{BasClas.metadata.deft}",
    5252    'reqd' => "no" } ];
    5353
     
    6060
    6161sub new {
    62     my $class = shift (@_);
    63     my $self = new BasClas($class, @_);
    64 
    65     # 14-05-02 To allow for proper inheritance of arguments - John Thompson
    66     my $option_list = $self->{'option_list'};
    67     push( @{$option_list}, $options );
    68 
    69     if ($self->{'info_only'}) {
    70     # created from classinfo.pl - don't need to parse the arguments
    71     return bless $self, $class;
    72     }
    73 
    74     my ($metadata, $title, $sortname, $list);
    75 
    76     if (!parsargv::parse(\@_,
    77              q^metadata/.*/^, \$metadata,
    78              q^buttonname/.*/^, \$title,
    79              q^sort/.*/^, \$sortname,
    80              "allow_extra_options")) {
    81    
    82     print STDERR "\nIncorrect options passed to $class, check your collect.cfg file\n";
    83     $self->print_txt_usage("");  # Use default resource bundle
    84     die "\n";
    85     }
    86     my @meta_list;
    87     my $meta1;
    88    
    89     if ($metadata) {
    90     @meta_list = split(/,/, $metadata);
     62    my ($class) = shift (@_);
     63
     64    my ($classifierslist,$inputargs,$hashArgOptLists) = @_;
     65    push(@$classifierslist, $class);
     66
     67    if(defined $arguments){ push(@{$hashArgOptLists->{"ArgList"}},@{$arguments});}
     68    if(defined $options) { push(@{$hashArgOptLists->{"OptList"}},$options)};
     69
     70    my $self = (defined $hashArgOptLists)? new BasClas($classifierslist,$inputargs,$hashArgOptLists): new BasClas($classifierslist,$inputargs);
     71
     72    # Transfer value from Auto Parsing to the variable name that used in previous GreenStone.
     73    my (@meta_list,$meta1);
     74    print STDERR "new List\n";
     75    if ($self->{"metadata"}) {
     76    print STDERR "List: splitting metadata, ".$self->{"metadata"}."\n";
     77    @meta_list = split(/,/, $self->{"metadata"});
    9178    $meta1 = $meta_list[0];
    92     } else {
    93     $metadata = undef;
     79    $self->{'meta_list'} = \@meta_list;
     80    } else {
    9481    $meta1=undef;
    9582    @meta_list = undef;
    9683    }
    9784
    98     if (!$title) {
    99     if (defined ($meta1)) {
    100         $title = $meta1;
    101     } else {
    102         $title = 'List';
    103     }
    104     }
    105 
    106     # sortname is handled a bit differently - kjdon
     85    if (!$self->{"buttonname"}) {
     86    if (defined ($self->{'metadata'})) {
     87        $self->{"buttonname"} = $self->generate_title_from_metadata($self->{'metadata'});
     88    } else {
     89        $self->{"buttonname"} = 'List';
     90    }
     91    }
     92
     93    # Further setup
     94    # $self->{"sort"} is handled a bit differently - kjdon
    10795    # undef means to sort, but use the metadata value from -metadata
    10896    # because there is no one metadata value to get for sorting when
    10997    # we have a list of possible metadata
    110     # to get no sorting, set sortname = 'nosort'
    111     if (!$sortname) {
    112     if (defined ($metadata)) {
    113         $sortname = undef;
    114     } else {
    115         $sortname = "nosort";
    116     }
    117     }
     98    # to get no sorting, set $self->{"sort"} = 'nosort'
     99    if (!$self->{"sort"}) {
     100    print STDERR "no sorting\n";
     101    if (defined ($self->{"metadata"})) {
     102        $self->{"sort"} = undef;
     103        print STDERR "setting no meta\n";
     104    } else {
     105        $self->{"sort"} = "nosort";
     106    }
     107    }   
     108    if (defined  $self->{"sort"} &&  $self->{"sort"} eq "nosort") {
     109    $self->{'list'} = [];
     110    } else {
     111    $self->{'list'} = {};
     112    }
     113       
     114    # Clean out the unused keys
     115    delete $self->{"metadata"}; # Delete this key
    118116   
    119     if (defined $sortname && $sortname eq "nosort") {
    120     $list = [];
    121     } else {
    122     $list = {};
    123     }
    124    
    125     $self->{'list'} = $list;
    126     if (defined $metadata) {
    127     $self->{'meta_list'} = \@meta_list;
    128     }
    129     $self->{'title'} = $title;
    130     $self->{'sortname'} = $sortname;
    131 
    132117    return bless $self, $class;
    133118}
     
    146131    # are we sorting the list??
    147132    my $nosort = 0;
    148     if (defined $self->{'sortname'} && $self->{'sortname'} eq "nosort") {
     133    if (defined $self->{'sort'} && $self->{'sort'} eq "nosort") {
    149134    $nosort = 1;
    150135    }
     
    195180
    196181    #check for a sort element other than our metadata
    197     if (defined $self->{'sortname'}) {
     182    if (defined $self->{'sort'}) {
    198183    my $sortmeta;
    199     if ($self->{'sortname'} =~ /^filename$/i) {
     184    if ($self->{'sort'} =~ /^filename$/i) {
    200185        $sortmeta = $doc_obj->get_source_filename();
    201186    } else {
    202         $sortmeta = $doc_obj->get_metadata_element($doc_obj->get_top_section(), $self->{'sortname'});
     187        $sortmeta = $doc_obj->get_metadata_element($doc_obj->get_top_section(), $self->{'sort'});
    203188        if (defined $sortmeta) {
    204         $sortmeta = &sorttools::format_metadata_for_sorting($self->{'sortname'}, $sortmeta, $doc_obj);
     189        $sortmeta = &sorttools::format_metadata_for_sorting($self->{'sort'}, $sortmeta, $doc_obj);
    205190        }
    206191    }
     
    225210
    226211    my @list = ();
    227     if (defined $self->{'sortname'} && $self->{'sortname'} eq "nosort") {
     212    if (defined $self->{'sort'} && $self->{'sort'} eq "nosort") {
    228213    @list = @{$self->{'list'}};
    229214    } else {
     
    233218    }   
    234219    }
    235 
    236220    # organise into classification structure
    237221    my %classifyinfo = ('childtype'=>'VList',
    238             'Title'=>$self->{'title'},
     222            'Title'=>$self->{'buttonname'},
    239223            'contains'=>[]);
    240224    $classifyinfo{'thistype'} = 'Invisible' unless $no_thistype;
Note: See TracChangeset for help on using the changeset viewer.