Also close bug
[filters.git] / fanboy
diff --git a/fanboy b/fanboy
index 7ca7eb4fd0388cea4fbce0550ca680a3e50e91b0..3881f0ae9b7df6571f78de803dae38fee9625953 100755 (executable)
--- a/fanboy
+++ b/fanboy
@@ -1,20 +1,65 @@
 #!/usr/bin/perl
 
+my %topics=(
+       git => [qw(linus git linux rebase rebased merge merged cherry-pick
+               branch branched branches git-* push pull pushed pulled)],
+       ubuntu => [qw(Mark MOTU PPA ubuntu debian rock rocks rule dapper
+               feisty fiesty gutsy hoary hardy edgy
+               universe launchpad gnome desktop naked sabdfl community)],
+       debian => [qw(Debian rules rule ian murdock upstream release
+               stable unstable testing apt apt-get deb developer NM RM
+               NMU FTBFS BTS ITP DFSG non-free free d.o)],
+);
+
 if (! @ARGV) {
-       @ARGV=qw(linus git linux rebase merge cherry-pick branch);
+       @ARGV=@{$topics{git}};
+}
+elsif (@ARGV == 1 && exists $topics{lc $ARGV[0]}) {
+       @ARGV=@{$topics{lc $ARGV[0]}};
 }
 
-my $coolstuff=join("|", map { "\Q$_\E" } @ARGV);
+my $total_awesomeness_dude=join("|", 
+       map {
+               $_=quotemeta($_);
+               s/\\\*/.*/g;
+               s/\\\?/./g;
+               qr/\b$_\b/;
+       } reverse sort @ARGV);
 
 my $len=0;
+my $indent="";
+my $indent_printed=0;
 while (<STDIN>) {
-       while(/(($coolstuff)[.?!]*)/ig) {
-               $len+=length($1)+1;
-               if ($len > 70) {
-                       print "\n";
-                       $len=0;
+       if (/$total_awesomeness_dude/i) {
+               if (/^([>|][>|\s]*)/) {
+                       if ($indent ne $1) {
+                               print "\n" if $len;
+                               $len=0;
+                               $indent=$1;
+                               $indent_printed=0;
+                       }
+               }
+               else {
+                       if (length $indent && $indent_printed) {
+                               print "\n";
+                               $len=0;
+                       }
+                       $indent="";
+                       $indent_printed=0;
+               }
+
+               while(/(($total_awesomeness_dude)[.?!]*)/ig) {
+                       $len+=length($1)+1;
+                       if ($len > 70) {
+                               print "\n";
+                               $len=0;
+                       }
+                       if (length $indent && ! $indent_printed) {
+                               print $indent;
+                               $indent_printed=1;
+                       }
+                       print $1." ";
                }
-               print $1." ";
        }
 }
 print "\n" if $len;
This page took 0.010047 seconds and 4 git commands to generate.