Call ->diff on the Commit instance.
Zachary Stevens [Sat, 26 Jun 2010 15:28:50 +0000 (16:28 +0100)]
Previously, the controller was calling Repository->diff(),
which delegated this call to the given Commit instance.  We
now use Commit->diff() directly.

This commit also cleans up the signature for Commit->diff(),
and removes Repository->diff().

lib/Gitalist/Controller/Fragment/Ref.pm
lib/Gitalist/Controller/Ref.pm
lib/Gitalist/Git/Object/Commit.pm
lib/Gitalist/Git/Repository.pm

index 65e4a61..42ed0ae 100644 (file)
@@ -14,13 +14,14 @@ sub base : Chained('/fragment/repository/find') PathPart('') CaptureArgs(0) {}
 
 sub _diff {
     my ($self, $c) = @_;
-    my $commit = $c->stash->{Commit};
-    my %filename = $c->stash->{filename} ? (filename => $c->stash->{filename}) : ();
-    my($tree, $patch) = $c->stash->{Repository}->diff(
-        commit => $commit,
-        parent => $c->stash->{parent},
-        patch  => 1,
-        %filename,
+    my %diff_args = ( patch => 1 );
+    foreach my $arg qw/filename parent/ {
+        if (defined $c->stash->{$arg}) {
+            $diff_args{$arg} = $c->stash->{$arg};
+        };
+    };
+    my ($tree, $patch) = $c->stash->{Commit}->diff(
+        %diff_args,
     );
     $c->stash(
       diff_tree => $tree,
@@ -28,7 +29,6 @@ sub _diff {
       # XXX Hack hack hack, see View::SyntaxHighlight
       blobs     => [map $_->{diff}, @$patch],
       language  => 'Diff',
-      %filename,
     );
 }
 
index 207d4ca..ddaabe6 100644 (file)
@@ -14,9 +14,7 @@ sub base : Chained('/repository/find') PathPart('') CaptureArgs(0) {}
 after commit => sub {
   my($self, $c) = @_;
 
-  $c->stash->{diff_tree} = ($c->stash->{Repository}->diff(
-    commit => $c->stash->{Commit},
-  ))[0];
+  $c->stash->{diff_tree} = ( $c->stash->{Commit}->diff )[0];
 };
 
 sub raw : Chained('find') Does('FilenameArgs') Args() {
index 0445999..ee3ba13 100644 (file)
@@ -47,10 +47,10 @@ class Gitalist::Git::Object::Commit
             return $self->_run_cmd_fh( @cmd );
         }
 
-        method diff ( Maybe[Bool] :$patch?,
-                       Maybe[NonEmptySimpleStr] :$parent?,
-                       Maybe[NonEmptySimpleStr] :$filename?
-                   ) {
+        method diff ( Bool              :$patch?,
+                      NonEmptySimpleStr :$parent?,
+                      NonEmptySimpleStr :$filename?
+                    ) {
             $parent = $parent
                 ? $parent
                     : $self->parents <= 1
index 5e4768e..860ce4d 100644 (file)
@@ -179,16 +179,6 @@ class Gitalist::Git::Repository with Gitalist::Git::HasUtils {
         # TODO - support compressed archives
     }
 
-    method diff ( Gitalist::Git::Object :$commit!,
-                  Bool :$patch?,
-                  Maybe[NonEmptySimpleStr] :$parent?,
-                  NonEmptySimpleStr :$filename?
-              ) {
-              return $commit->diff( patch => $patch,
-                                    parent => $parent,
-                                    filename => $filename);
-    }
-
     method reflog (@logargs) {
         my @entries
             =  $self->run_cmd(qw(log -g), @logargs)