Git::Object.from_raw: singleton factory function
authorMatthias Lederhofer <[email protected]>
Tue, 23 Jan 2007 15:02:13 +0000 (23 16:02 +0100)
committerMatthias Lederhofer <[email protected]>
Tue, 23 Jan 2007 15:03:19 +0000 (23 16:03 +0100)
git.rb
git/object.rb

diff --git a/git.rb b/git.rb
index cbe91b0..d1d92fb 100644 (file)
--- 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)
index 1d1c1dd..0221d7a 100644 (file)
@@ -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