/[bfilter]/trunk/bfilter.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/bfilter.pl

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

revision 4 by dpavlin, Tue Sep 7 09:16:06 2004 UTC revision 9 by dpavlin, Wed Sep 8 17:32:20 2004 UTC
# Line 7  use locale; Line 7  use locale;
7  # maximum entries  # maximum entries
8  my $max = 0;  my $max = 0;
9  # minimum letters to search by  # minimum letters to search by
10  my $min_len = 2;  my $min_len = 3;
11  # if more than x elements, warn to increase min_len  # if more than x elements, warn to increase min_len
12  my $increase_at = 500;  my $increase_at = 500;
13    
# Line 35  my $max_elements = 0; Line 35  my $max_elements = 0;
35  while(<STDIN>) {  while(<STDIN>) {
36          chomp;          chomp;
37    
38          # escape single quote          if (!m/\t/ || m/\t$/) {
39          s/'/\\'/g;                  print STDERR "SKIP '$_': no tab\n";
40                    next;
41            }
42    
43            my ($path,$headline) = split(/\t+/,$_,2);
44    
45            if (length($headline) < $min_len) {
46                    print STDERR "SKIP '$_': too short\n";
47                    next;
48            }
49    
50    
51          # split into min_len part and rest          # split into min_len part and rest
52          my ($part,$rest) = ( substr($_,0,$min_len), substr($_,$min_len) );          my ($part,$rest) = ( substr($headline,0,$min_len), substr($headline,$min_len) );
53    
54            # escape special chars
55            $part =~ s/(['\\])/\\$1/g && print STDERR "ESCAPED part '$part'\n";
56            $rest =~ s/(['\\])/\\$1/g && print STDERR "ESCAPED rest '$rest'\n";
57            $headline =~ s/(['\\])/\\$1/g;
58    
59          # make part lowercase          # make part lowercase
60          $part = lc($part);          $part = lc($part);
# Line 48  while(<STDIN>) { Line 63  while(<STDIN>) {
63    
64          # new part?          # new part?
65          if ($part ne $last_part) {          if ($part ne $last_part) {
66                  print STDERR $last_part,"\t",$#part_arr+1,"\n" if ($debug);                  print STDERR $last_part,"\t",$#part_arr+1,"\n" if ($debug && $#part_arr > $increase_at);
67                  $max_elements = $#part_arr if ($#part_arr > $max_elements);                  $max_elements = $#part_arr if ($#part_arr > $max_elements);
68                  print "headlines['$last_part'] = Array(\n ",join(",\n ",@part_arr),");\n" if (@part_arr);                  print "headlines['$last_part'] = [\n ",join(",\n ",@part_arr),"];\n" if (@part_arr);
69                  $total += $#part_arr;                  $total += $#part_arr;
70                  @part_arr = ();                  @part_arr = ();
71                  $last_part = $part;                  $last_part = $part;
72          }          }
73          push @part_arr, "'$_'";          push @part_arr, "['$path','$headline']";
74    
75          # break out?          # break out?
76          last if ($max && $total > $max);          last if ($max && $total > $max);
77  }  }
78    
79  print "headlines['$last_part'] = Array(\n ",join(",\n ",@part_arr),");\n" if (@part_arr);  print "headlines['$last_part'] = [\n ",join(",\n ",@part_arr),"];\n" if (@part_arr);
80  print "var min_len = $min_len;\n";  print qq{
81  print "// index elements: $total\n";  
82    var min_len = $min_len;
83    var html_pre = '<div><a href="../';
84    var html_mid = '">';
85    var html_post = '</a></div>';
86    
87    // index elements: $total
88    
89    };
90    
91  print STDERR "You have more than $increase_at elements in one array,\nyou whould probably increase min_len to ",$min_len+1," or higher.\n" if ($max_elements > $increase_at);  print STDERR "You have more than $increase_at elements, so you should\nincrease min_len to ",$min_len+1," or higher for performance benefit.\n" if ($max_elements > $increase_at);

Legend:
Removed from v.4  
changed lines
  Added in v.9

  ViewVC Help
Powered by ViewVC 1.1.26