X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=all2xml.pl;h=98f5de158736bd29a39a488752ed6e94be97dc20;hb=89f439343fc889a8b9e7d283600b419225238835;hp=76009de5ce8ccb00331e86aa558daea0299cd8bb;hpb=1900ca4c5ce72e17304d02523fd28dafdfa4cffc;p=webpac diff --git a/all2xml.pl b/all2xml.pl index 76009de..98f5de1 100755 --- a/all2xml.pl +++ b/all2xml.pl @@ -61,6 +61,8 @@ my %type2tag = ( 'feed' => 'feed' ); +my $cache; # for cacheing + sub data2xml { use xmlify; @@ -90,7 +92,15 @@ sub data2xml { return $va <=> $vb; } - foreach my $field (sort by_order keys %{$config->{indexer}}) { + my @sorted_tags; + if ($cache->{tags_by_order}->{$type}) { + @sorted_tags = @{$cache->{tags_by_order}->{$type}}; + } else { + @sorted_tags = sort by_order keys %{$config->{indexer}}; + $cache->{tags_by_order}->{$type} = \@sorted_tags; + } + + foreach my $field (@sorted_tags) { $field=x($field); $field_usage{$field}++; @@ -167,8 +177,9 @@ sub data2xml { # filter="name" ; filter this field through # filter/[name].pm my $filter = $x->{filter}; - if ($filter) { + if ($filter && !$cache->{filter_loaded}->{$filter}) { require "filter/".$filter.".pm"; + $cache->{filter_loaded}->{$filter}++; } # type="swish" ; field for swish if ($swish) {