gitweb: Refactor untabifying - converting tabs to spaces
authorJakub Narebski <jnareb@gmail.com>
Sun, 6 Aug 2006 00:08:31 +0000 (02:08 +0200)
committerJunio C Hamano <junkio@cox.net>
Sun, 6 Aug 2006 09:00:32 +0000 (02:00 -0700)
Add untabify subroutine and use it.  It also fixes git_diff_print
which used to get the tabstop wrong.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
gitweb/gitweb.perl

index 1b5fec924faae293f097d79f5c81e72a159177e8..d0672cde3e713d92ba30d07531e55f1db5d5670c 100755 (executable)
@@ -221,6 +221,20 @@ sub unquote {
        return $str;
 }
 
+# escape tabs (convert tabs to spaces)
+sub untabify {
+       my $line = shift;
+
+       while ((my $pos = index($line, "\t")) != -1) {
+               if (my $count = (8 - ($pos % 8))) {
+                       my $spaces = ' ' x $count;
+                       $line =~ s/\t/$spaces/;
+               }
+       }
+
+       return $line;
+}
+
 ## ----------------------------------------------------------------------
 ## HTML aware string manipulation
 
@@ -1237,12 +1251,7 @@ sub git_diff_print {
                                # skip errors
                                next;
                        }
-                       while ((my $pos = index($line, "\t")) != -1) {
-                               if (my $count = (8 - (($pos-1) % 8))) {
-                                       my $spaces = ' ' x $count;
-                                       $line =~ s/\t/$spaces/;
-                               }
-                       }
+                       $line = untabify($line);
                        print "<div class=\"diff$diff_class\">" . esc_html($line) . "</div>\n";
                }
        }
@@ -1582,13 +1591,8 @@ HTML
                $age_class  = age_class($age);
                $author     = esc_html ($author);
                $author     =~ s/ /&nbsp;/g;
-               # escape tabs
-               while ((my $pos = index($data, "\t")) != -1) {
-                       if (my $count = (8 - ($pos % 8))) {
-                               my $spaces = ' ' x $count;
-                               $data =~ s/\t/$spaces/;
-                       }
-               }
+
+               $data = untabify($data);
                $data = esc_html ($data);
 
                print <<HTML;
@@ -1711,12 +1715,7 @@ sub git_blob {
        while (my $line = <$fd>) {
                chomp $line;
                $nr++;
-               while ((my $pos = index($line, "\t")) != -1) {
-                       if (my $count = (8 - ($pos % 8))) {
-                               my $spaces = ' ' x $count;
-                               $line =~ s/\t/$spaces/;
-                       }
-               }
+               $line = untabify($line);
                printf "<div class=\"pre\"><a id=\"l%i\" href=\"#l%i\" class=\"linenr\">%4i</a> %s</div>\n", $nr, $nr, $nr, esc_html($line);
        }
        close $fd or print "Reading blob failed.\n";