Showing 3 changed files with 33 additions and 11 deletions
+18 -10
lib/Gitprep/Git.pm
... ...
@@ -217,7 +217,8 @@ sub blob_diffs {
217 217
       from_file => $from_file,
218 218
       lines => $lines,
219 219
       add_line_count => $diff_info->{add_line_count},
220
-      delete_line_count => $diff_info->{delete_line_count}
220
+      delete_line_count => $diff_info->{delete_line_count},
221
+      binary => $diff_info->{binary}
221 222
     };
222 223
     
223 224
     # Diff tree info
... ...
@@ -228,6 +229,7 @@ sub blob_diffs {
228 229
         $diff_tree->{delete_line_count} = $diff_info->{delete_line_count};
229 230
         $diff_tree->{add_block_count} = $diff_info->{add_block_count};
230 231
         $diff_tree->{delete_block_count} = $diff_info->{delete_block_count};
232
+        $diff_tree->{binary} = $diff_info->{binary};
231 233
         last;
232 234
       }
233 235
     }
... ...
@@ -1011,7 +1013,9 @@ sub last_change_commit {
1011 1013
 
1012 1014
 sub parse_blob_diff_lines {
1013 1015
   my ($self, $lines) = @_;
1014
-  
1016
+
1017
+  my $diff_info = {};
1018
+
1015 1019
   # Parse
1016 1020
   my @lines;
1017 1021
   my $next_before_line_num;
... ...
@@ -1019,13 +1023,15 @@ sub parse_blob_diff_lines {
1019 1023
   my $add_line_count = 0;
1020 1024
   my $delete_line_count = 0;
1021 1025
   for my $line (@$lines) {
1026
+    warn $line;
1027
+    
1022 1028
     chomp $line;
1023 1029
     
1024 1030
     my $class;
1025 1031
     my $before_line_num;
1026 1032
     my $after_line_num;
1027 1033
     
1028
-    if ($line =~ /^@@\s-(\d+),\d+\s\+(\d+),\d+/) {
1034
+    if ($line =~ /^@@\s-(\d+)(?:,\d+)?\s\+(\d+)/) {
1029 1035
       $next_before_line_num = $1;
1030 1036
       $next_after_line_num = $2;
1031 1037
       
... ...
@@ -1047,7 +1053,10 @@ sub parse_blob_diff_lines {
1047 1053
       $after_line_num = $next_after_line_num++;
1048 1054
       $add_line_count++;
1049 1055
     }
1050
-    elsif ($line =~ /^Binary files/) { $class = 'binary_file' }
1056
+    elsif ($line =~ /^Binary files/) {
1057
+      $class = 'binary_file';
1058
+      $diff_info->{binary} = 1;
1059
+    }
1051 1060
     elsif ($line =~ /^ /) {
1052 1061
       $class = 'diff';
1053 1062
       $before_line_num = $next_before_line_num++;
... ...
@@ -1075,12 +1084,11 @@ sub parse_blob_diff_lines {
1075 1084
     ? 0
1076 1085
     : floor(($delete_line_count * 5) / $diff_line_count);
1077 1086
   
1078
-  my $diff_info = {
1079
-    add_line_count => $add_line_count,
1080
-    delete_line_count => $delete_line_count,
1081
-    add_block_count => $add_block_count,
1082
-    delete_block_count => $delete_block_count
1083
-  };
1087
+  $diff_info->{add_line_count} = $add_line_count;
1088
+  $diff_info->{delete_line_count} = $delete_line_count;
1089
+  $diff_info->{add_block_count} = $add_block_count;
1090
+  $diff_info->{delete_block_count} = $delete_block_count;
1091
+  
1084 1092
   return (\@lines, $diff_info);
1085 1093
 }
1086 1094
 
+1 -1
templates/include/diff_status_bar.html.ep
... ...
@@ -27,7 +27,7 @@
27 27
 %>
28 28
 
29 29
 
30
-<<%= $tag %> title="<%= $diff_count_text %>" style="text-decoration:none;color:#666" href="#<%= $fragment %>"><%= $diff_line_count %></<%= $tag %>>
30
+<<%= $tag %> title="<%= $diff_count_text %>" style="text-decoration:none;color:#666" href="#<%= $fragment %>"><%= $diff_tree->{binary} ? 'BIN' : $diff_line_count %></<%= $tag %>>
31 31
 
32 32
 <<%= $tag %> title="<%= $diff_count_text %>" style="text-decoration:none;display:inline-block;overflow:none;" href="#<%= $fragment %>">
33 33
   % for (my $i = 0; $i < $add_block_count; $i++) {
+14
xt/basic.t
... ...
@@ -120,9 +120,23 @@ note 'Commit page';
120 120
   note 'add text';
121 121
   {
122 122
     $t->get_ok("/$user/$project/commit/da5b854b760351adc58d24d121070e729e80534d");
123
+    $t->content_like(qr/\@\@/);
123 124
     $t->content_like(qr/\+aaa/);
124 125
   }
125 126
   
127
+  note 'added aaa to a_renamed.txt for merge commit';
128
+  {
129
+    $t->get_ok("/$user/$project/commit/da5b854b760351adc58d24d121070e729e80534d");
130
+    $t->content_like(qr/\@\@/);
131
+  }
132
+  
133
+  note 'add image data';
134
+  {
135
+    $t->get_ok("/$user/$project/commit/0b6eca6a28538b1226961ca7655d2662f3522652");
136
+    $t->content_like(qr/BIN/);
137
+    $t->content_like(qr#/raw/0b6eca6a28538b1226961ca7655d2662f3522652/sample.png#);
138
+  }
139
+  
126 140
   note 'Branch name';
127 141
   {
128 142
     # Page access (branch name)