Changeset 2772


Ignore:
Timestamp:
2001-10-02T15:53:09+12:00 (23 years ago)
Author:
kjm18
Message:

changes to enable language specific collectionmeta in collect.cfg
collectionmeta now specified as eg
collectionmeta collectionname [l=en] "greenstone demo"
any entries without language parameter are used as a default

Location:
trunk/gsdl/perllib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/cfgread.pm

    r813 r2772  
    7171
    7272
    73 # stringexp, arrayexp, hashexp and arrayarrayexp
     73# stringexp, arrayexp, hashexp,arrayarrayexp and hashhashexp
    7474# should be something like '^(this|that)$'
    7575sub read_cfg_file {
    76     my ($filename, $stringexp, $arrayexp, $hashexp, $arrayarrayexp) = @_;
     76    my ($filename, $stringexp, $arrayexp, $hashexp, $arrayarrayexp,
     77    $hashhashexp) = @_;
    7778    my ($line);
    7879    my $data = {};
     
    9899            push (@{$data->{$key}}, $line);
    99100        }
     101        elsif (defined $hashhashexp && $key =~ /$hashhashexp/) {
     102            my $k = shift @$line;
     103            my $p = shift @$line;
     104            my $v = shift @$line;
     105            if (!defined $v) {
     106            $v = $p;
     107            $p = 'default';
     108            }
     109            $data->{$key}->{$k}->{$p} = $v;
     110        }
    100111        }
    101112    }
    102113    close (COLCFG);
     114
    103115    } else {
    104116    print STDERR "cfgread::read_cfg_file couldn't read the cfg file $filename\n";
     
    112124# should be something like '^(this|that)$'
    113125sub write_cfg_file {
    114     my ($filename, $data, $stringexp, $arrayexp, $hashexp, $arrayarrayexp) = @_;
     126    my ($filename, $data, $stringexp, $arrayexp, $hashexp, $arrayarrayexp,
     127    $hashhashexp) = @_;
    115128   
    116129    if (open (COLCFG, ">$filename")) {
     
    128141            &write_cfg_line ('COLCFG', [$key, @$k]);
    129142        }
     143        } elsif ($key =~ /$hashhashexp/) {
     144        foreach $k (keys (%{$data->{$key}})) {
     145            foreach $p (keys (%{$data->{$key}->{$k}})) {
     146            if ($p =~ /default/) {
     147                &write_cfg_line ('COLCFG',
     148                         [$key, $k, $data->{$key}->{$k}]);
     149            }
     150            else {
     151                &write_cfg_line ('COLCFG',
     152                   [$key, $k, $p, $data->{$key}->{$k}->{$p}]);
     153            }
     154            }
     155        }
    130156        }
    131157    }
  • trunk/gsdl/perllib/colcfg.pm

    r2711 r2772  
    5555
    5656# {'subcollection'}->hash of key-value pairs
    57 # {'collectionmeta'}->hash of key-value pairs
    5857
    5958# {'plugin'}->array of arrays of strings
    6059# {'classify'}->array of arrays of strings
     60
     61# {'collectionmeta'}->hash of key->hash of param-value -used
     62# for language specification
     63#    for example, collectionmeta->collectionname->default->demo
     64#                                               ->mi->maori demo
    6165
    6266sub read_collect_cfg {
     
    7175                    q/(maintainer|languages|indexsubcollections|/ .
    7276                       q/indexes|dontbuild|dontgdbm|mirror|phind|levels)$/,
    73                     q/^(subcollection|collectionmeta)$/,
    74                     q/^(plugin|classify)$/);
     77                    q/^(subcollection)$/,
     78                    q/^(plugin|classify)$/,
     79                    q/^(collectionmeta)$/);
    7580}
    7681
     
    8489                 q/^(maintainer|languages|indexsubcollections|/ .
    8590                 q/indexes|dontbuild|dontgdbm|levels)$/,
    86                  q/^(subcollection|collectionmeta)$/,
    87                  q/^(plugin|classify)$/);
     91                 q/^(subcollection)$/,
     92                 q/^(plugin|classify)$/,
     93                 q/^(collectionmeta)$/);
    8894}
    8995
     
    120126
    1211271;
     128
  • trunk/gsdl/perllib/mgbuilder.pm

    r2506 r2772  
    668668    if (defined $self->{'collect_cfg'}->{'collectionmeta'}) {
    669669   
    670     if (!defined $self->{'index_mapping'}) {
     670        if (!defined $self->{'index_mapping'}) {
    671671        $self->{'index_mapping'} =
    672672        $self->create_index_mapping ($self->{'collect_cfg'}->{'indexes'});
    673673    }
    674 
     674   
    675675    print $handle "[collection]\n";
    676    
     676     
    677677    foreach $cmeta (keys (%{$self->{'collect_cfg'}->{'collectionmeta'}})) {
     678        my $defaultfound=0;
     679        my $first=1;
     680        my $metadata_entry = "";
     681        my $default="";
     682        my $cmetamap = "";
    678683        if ($cmeta =~ s/^\.//) {
    679         if (defined $self->{'index_mapping'}->{$cmeta}) {
    680             print $handle "<$self->{'index_mapping'}->{$cmeta}>" .
    681             $self->{'collect_cfg'}->{'collectionmeta'}->{".$cmeta"} . "\n";
    682         } 
     684            if (defined $self->{'index_mapping'}->{$cmeta}) {
     685            $cmetamap = $self->{'index_mapping'}->{$cmeta};
     686            $cmeta = ".$cmeta";
     687        }
    683688        else {
    684689            print $outhandle "mgbuilder: warning bad collectionmeta option '$cmeta' - ignored\n";
     690            next; #ignore this one
    685691        }
    686         } else {
    687         print $handle "<$cmeta>$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}\n";
    688         }
    689     }
     692        }
     693        else {
     694        $cmetamap = $cmeta; # just using the same name
     695        }
     696        #iterate through the languages
     697        foreach $lang (keys (%{$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}})) {
     698        if ($first) {
     699            $first=0;
     700            #set the default default to the first entry
     701            $default=$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{$lang};
     702        }
     703        if ($lang =~ /default/) {
     704            $defaultfound=1;
     705            #the default entry goes first
     706            $metadata_entry = "<$cmetamap>" .
     707            $self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{'default'} . "\n" . $metadata_entry;
     708        }
     709        else {
     710            my ($l) = $lang =~ /^\[l=(\w*)\]$/;
     711            if ($l) {         
     712            $metadata_entry .= "<$cmetamap:$l>" .
     713                $self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{$lang} . "\n";
     714            }
     715        }
     716        }
     717        #if we haven't found a default, put one in
     718        if (!$defaultfound) {
     719        $metadata_entry = "<$cmetamap>$default\n" . $metadata_entry;
     720        }
     721    #write the entry to the file
     722    print $handle $metadata_entry;
     723
     724    }
     725   
    690726    print $handle "\n" . ('-' x 70) . "\n";
    691 
     727   
    692728    }
    693729
  • trunk/gsdl/perllib/mgppbuilder.pm

    r2700 r2772  
    678678        # delete it!
    679679        print $outhandle "deleting $file\n" if $self->{'verbosity'} > 2;
    680         &util::rm (&util::filename_cat ($tmpdir, $file));
     680        #&util::rm (&util::filename_cat ($tmpdir, $file));
    681681        }
    682682    }
     
    759759        $self->create_index_mapping ($self->{'collect_cfg'}->{'indexes'});
    760760    }
    761 
     761   
    762762    print $handle "[collection]\n";
    763    
     763
    764764    foreach $cmeta (keys (%{$self->{'collect_cfg'}->{'collectionmeta'}})) {
     765        my $defaultfound=0;
     766        my $first=1;
     767        my $metadata_entry = "";
     768        my $default="";
     769        my $cmetamap = "";
    765770        if ($cmeta =~ s/^\.//) {
    766771        if (defined $self->{'index_mapping'}->{$cmeta}) {
    767             print $handle "<$self->{'index_mapping'}->{$cmeta}>" .
    768             $self->{'collect_cfg'}->{'collectionmeta'}->{".$cmeta"} . "\n";
    769         } else {
    770             print $outhandle "mgppbuilder: warning bad collectionmeta option '$cmeta' - ignored\n";
     772            $cmetamap = $self->{'index_mapping'}->{$cmeta};
     773            $cmeta = ".$cmeta";
    771774        }
    772         } else {
    773         print $handle "<$cmeta>$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}\n";
    774         }
    775     }
    776     #print out the indexfield mapping
    777     foreach $field (keys %{$self->{'buildproc'}->{'indexfields'}}) {
    778         $shortname = $self->{'buildproc'}->{'indexfieldmap'}->{$field};
    779         print $handle "<$shortname>$field\n" if defined $shortname;
    780     }
     775        else {
     776            print $outhandle "mgbuilder: warning bad collectionmeta option '$cmeta' - ignored\n";
     777            next; #ignore this one
     778        }
     779        }
     780        else {
     781        $cmetamap = $cmeta; # just using the same name
     782        }
     783        #iterate through the languages
     784        foreach $lang (keys (%{$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}})) {
     785        if ($first) {
     786            $first=0;
     787            #set the default default to the first entry
     788            $default=$self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{$lang};
     789        }
     790        if ($lang =~ /default/) {
     791            $defaultfound=1;
     792            #the default entry goes first
     793            $metadata_entry = "<$cmetamap>" .
     794            $self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{'default'} . "\n" . $metadata_entry;
     795        }
     796        else {
     797            my ($l) = $lang =~ /^\[l=(\w*)\]$/;
     798            if ($l) {         
     799            $metadata_entry .= "<$cmetamap:$l>" .
     800                $self->{'collect_cfg'}->{'collectionmeta'}->{$cmeta}->{$lang} . "\n";
     801            }
     802        }
     803        }
     804        #if we haven't found a default, put one in
     805        if (!$defaultfound) {
     806        $metadata_entry = "<$cmetamap>$default\n" . $metadata_entry;
     807        }
     808        #write the entry to the file
     809        print $handle $metadata_entry;
     810       
     811    }
     812   
    781813    print $handle "\n" . ('-' x 70) . "\n";
    782 
    783     }
    784 
     814   
     815    }
     816   
    785817    &plugin::read ($self->{'pluginfo'}, $self->{'source_dir'},
    786818           "", {}, $self->{'buildproc'}, $self->{'maxdocs'});
     
    790822                     $self->{'allclassifications'});
    791823
     824    #output doclist
     825    my @doclist = $self->{'buildproc'}->get_doc_list();
     826    my $docs = join (";",@doclist);
     827    print $handle "[browselist]\n";
     828    print $handle "<hastxt>0\n";
     829    print $handle "<childtype>VList\n";
     830    print $handle "<numleafdocs>" . ($#doclist+1) . "\n";
     831    print $handle "<thistype>Invisible\n";
     832    print $handle "<contains>$docs";
     833    print $handle "\n" . ('-' x 70) . "\n";
    792834    close ($handle) if !$self->{'debug'};
     835
    793836}
    794837
Note: See TracChangeset for help on using the changeset viewer.