X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FGit%2FObject.pm;h=c4e87d4c5b64a9fb81e59146bb2f9a92f7ecdc37;hb=460b079a490cc638ecdd666c63d8edc09b7a8bcc;hp=544b473d4888e97bbf21358f67630b9d6a9f634b;hpb=775e96e0a8df3b699e1ad9bdd9800f0ac6436b7a;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/Git/Object.pm b/lib/Gitalist/Git/Object.pm index 544b473..c4e87d4 100644 --- a/lib/Gitalist/Git/Object.pm +++ b/lib/Gitalist/Git/Object.pm @@ -1,13 +1,16 @@ use MooseX::Declare; use Moose::Autobox; -class Gitalist::Git::Object { +class Gitalist::Git::Object with Gitalist::Git::Serializable is dirty { + use MooseX::Storage::Meta::Attribute::Trait::DoNotSerialize; + use MooseX::Types::Moose qw/Str Int Bool Maybe ArrayRef/; use MooseX::Types::Common::String qw/NonEmptySimpleStr/; - use File::Stat::ModeString qw/mode_to_string/; + use Gitalist::Utils qw/mode_string/; + use overload '""' => '_to_string', fallback => 1; - # project and sha1 are required initargs - has project => ( isa => 'Gitalist::Git::Project', + # repository and sha1 are required initargs + has repository => ( isa => 'Gitalist::Git::Repository', required => 1, is => 'ro', weak_ref => 1, @@ -32,12 +35,12 @@ class Gitalist::Git::Object { lazy_build => 1 ) for qw/modestr size/; - has _gpp_obj => ( isa => 'Git::PurePerl::Object', - required => 1, - is => 'ro', + has _gpp_obj => ( isa => 'Git::PurePerl::Object', + required => 1, + is => 'ro', lazy_build => 1, - handles => [ 'content', - ], + handles => [ 'content' ], + traits => ['DoNotSerialize'] ); # objects can't determine their mode or filename @@ -52,6 +55,9 @@ class Gitalist::Git::Object { method BUILD { $self->$_() for qw/_gpp_obj size modestr/ } ## Private methods + method _to_string { + return $self->sha1; + }; ## Builders method _build__gpp_obj { @@ -64,17 +70,35 @@ class Gitalist::Git::Object { return $v; } - method _build_modestr { - my $modestr = mode_to_string($self->mode); - return $modestr; - } - method _cat_file_with_flag ($flag) { $self->_run_cmd('cat-file', '-' . $flag, $self->{sha1}) } + method _build_modestr { + return mode_string($self->mode); + } + } # end class +__END__ + +=head1 NAME + +Gitalist::Git::Object - Model of a git object. + +=head1 SYNOPSIS + + my $object = Repository->get_object($sha1); + +=head1 DESCRIPTION + +Abstract base class for git objects. + + +=head1 ATTRIBUTES + + +=head1 METHODS =head1 AUTHORS