/[webpac]/trunk/all2xml.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/all2xml.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 153 by dpavlin, Sun Nov 16 22:42:41 2003 UTC revision 170 by dpavlin, Sun Nov 23 15:42:16 2003 UTC
# Line 61  my %type2tag = ( Line 61  my %type2tag = (
61          'feed' => 'feed'          'feed' => 'feed'
62  );  );
63    
64    my $cache;      # for cacheing
65    
66  sub data2xml {  sub data2xml {
67    
68          use xmlify;          use xmlify;
# Line 90  sub data2xml { Line 92  sub data2xml {
92                  return $va <=> $vb;                  return $va <=> $vb;
93          }          }
94    
95          foreach my $field (sort by_order keys %{$config->{indexer}}) {          my @sorted_tags;
96            if ($cache->{tags_by_order}->{$type}) {
97                    @sorted_tags = @{$cache->{tags_by_order}->{$type}};
98            } else {
99                    @sorted_tags = sort by_order keys %{$config->{indexer}};
100                    $cache->{tags_by_order}->{$type} = \@sorted_tags;
101            }
102    
103            foreach my $field (@sorted_tags) {
104    
105                  $field=x($field);                  $field=x($field);
106                  $field_usage{$field}++;                  $field_usage{$field}++;
107    
108                  my $swish_data = "";                  my $swish_data = "";
109                    my $swish_exact_data = "";
110                  my $display_data = "";                  my $display_data = "";
111                  my $line_delimiter;                  my $line_delimiter;
112    
# Line 109  sub data2xml { Line 120  sub data2xml {
120    
121                          my $repeat_off = 0;             # repeatable offset                          my $repeat_off = 0;             # repeatable offset
122    
123                          my ($s,$d,$i) = (1,1,0);        # swish, display default                          my ($s,$se,$d,$i) = (1,0,1,0);  # swish, display default
124                          $s = 0 if (lc($x->{type}) eq "display");                          $s = 0 if (lc($x->{type}) eq "display");
125                          $d = 0 if (lc($x->{type}) eq "swish");                          $d = 0 if (lc($x->{type}) eq "swish");
126                            $se = 1 if (lc($x->{type}) eq "swish_exact");
127                          ($s,$d,$i) = (0,0,1) if (lc($x->{type}) eq "index");                          ($s,$d,$i) = (0,0,1) if (lc($x->{type}) eq "index");
128    
129                          # what will separate last line from this one?                          # what will separate last line from this one?
# Line 165  sub data2xml { Line 177  sub data2xml {
177                                  # filter="name" ; filter this field through                                  # filter="name" ; filter this field through
178                                  # filter/[name].pm                                  # filter/[name].pm
179                                  my $filter = $x->{filter};                                  my $filter = $x->{filter};
180                                  if ($filter) {                                  if ($filter && !$cache->{filter_loaded}->{$filter}) {
181                                          require "filter/".$filter.".pm";                                          require "filter/".$filter.".pm";
182                                            $cache->{filter_loaded}->{$filter}++;
183                                  }                                  }
184                                  # type="swish" ; field for swish                                  # type="swish" ; field for swish
185                                  if ($s && $swish) {                                  if ($swish) {
186                                          if ($filter) {                                          if ($filter && ($s || $se)) {
187                                                  no strict 'refs';                                                  no strict 'refs';
188                                                  $swish_data .= join(" ",&$filter($swish));                                                  my $tmp = join(" ",&$filter($swish)) if ($s || $se);
189                                                    $swish_data .= $tmp if ($s);
190                                                    $swish_exact_data .= $tmp if ($se);
191    
192                                          } else {                                          } else {
193                                                  $swish_data .= $swish;                                                  $swish_data .= $swish if ($s);
194                                                    $swish_exact_data .= $swish if ($se);
195                                          }                                          }
196                                  }                                  }
197    
# Line 231  sub data2xml { Line 248  sub data2xml {
248                          my ($s,$d,$i) = (1,1,0);        # swish, display default                          my ($s,$d,$i) = (1,1,0);        # swish, display default
249                          $s = 0 if (lc($x->{type}) eq "display");                          $s = 0 if (lc($x->{type}) eq "display");
250                          $d = 0 if (lc($x->{type}) eq "swish");                          $d = 0 if (lc($x->{type}) eq "swish");
251                            # no support for swish exact in config.
252                            # IMHO, it's useless
253                          ($s,$d,$i) = (0,0,1) if (lc($x->{type}) eq "index");                          ($s,$d,$i) = (0,0,1) if (lc($x->{type}) eq "index");
254    
255                          if ($val) {                          if ($val) {
# Line 273  sub data2xml { Line 292  sub data2xml {
292                          $xml .= xmlify($field."_swish", unac_string($codepage,$swish_data));                          $xml .= xmlify($field."_swish", unac_string($codepage,$swish_data));
293                  }                  }
294    
295                    if ($swish_exact_data) {
296                            $swish_exact_data =~ s/ +/ /g;
297                            $swish_exact_data =~ s/ +$//g;
298    
299                            # add delimiters before and after word.
300                            # That is required to produce exact match
301                            $xml .= xmlify($field."_swish_exact", unac_string($codepage,'xxbxx '.$swish_exact_data.' xxexx'));
302                    }
303    
304    
305          }          }
306    
# Line 308  $index = new index_DBI( Line 336  $index = new index_DBI(
336    
337  my $show_progress = $cfg_global->val('global', 'show_progress');  my $show_progress = $cfg_global->val('global', 'show_progress');
338    
339    my $unac_filter = $cfg_global->val('global', 'unac_filter');
340    if ($unac_filter) {
341            require $unac_filter;
342    }
343    
344  foreach my $database ($cfg->Sections) {  foreach my $database ($cfg->Sections) {
345    
346          my $type = lc($cfg -> val($database, 'type')) || die "$database doesn't have 'type' defined";          my $type = lc($cfg -> val($database, 'type')) || die "$database doesn't have 'type' defined";

Legend:
Removed from v.153  
changed lines
  Added in v.170

  ViewVC Help
Powered by ViewVC 1.1.26