From: Matthias Lederhofer Date: Tue, 23 Jan 2007 15:02:13 +0000 (+0100) Subject: Git::Object.from_raw: singleton factory function X-Git-Url: https://repo.or.cz/git/ruby-binding.git/commitdiff_plain/71700ce0eb2b6606ab008ba5b5e30a5725e97dd4 Git::Object.from_raw: singleton factory function --- diff --git a/git.rb b/git.rb index cbe91b0163..d1d92fb306 100644 --- a/git.rb +++ b/git.rb @@ -12,19 +12,7 @@ module Git def get_object_by_sha1(sha1) r = get_raw_object_by_sha1(sha1) return nil if !r - - case r.type - when :blob - return Blob.new(r, self) - when :tree - return Tree.new(r, self) - when :commit - return Commit.new(r, self) - when :tag - return Tag.new(r, self) - else - raise RuntimeError, "got invalid object-type" - end + Object.from_raw(r, self) end def get_raw_object_by_sha1(sha1) diff --git a/git/object.rb b/git/object.rb index 1d1c1dd0bc..0221d7aa2d 100644 --- a/git/object.rb +++ b/git/object.rb @@ -23,6 +23,21 @@ module Git # base class for all git objects (blob, tree, commit, tag) class Object + def Object.from_raw(rawobject, repository = nil) + case rawobject.type + when :blob + return Blob.new(rawobject, repository) + when :tree + return Tree.new(rawobject, repository) + when :commit + return Commit.new(rawobject, repository) + when :tag + return Tag.new(rawobject, repository) + else + raise RuntimeError, "got invalid object-type" + end + end + def initialize raise NotImplemented, "abstract class" end