Use a macro to convert Geef.Object to :geef_object
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
defmodule Geef.Blob do
|
||||
alias Geef.Object
|
||||
import :macros, Object
|
||||
|
||||
def lookup(repo, id) do
|
||||
case :geef_obj.lookup(repo, id) do
|
||||
@@ -11,11 +12,11 @@ defmodule Geef.Blob do
|
||||
end
|
||||
|
||||
def size(obj = Object[type: :blob]) do
|
||||
:geef_blob.size(set_elem(obj, 0, :geef_object))
|
||||
:geef_blob.size(rebind(obj))
|
||||
end
|
||||
|
||||
def content(obj = Object[type: :blob]) do
|
||||
:geef_blob.content(set_elem(obj, 0, :geef_object))
|
||||
:geef_blob.content(rebind(obj))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
defmodule Geef.Commit do
|
||||
alias Geef.Object
|
||||
import :macros, Object
|
||||
|
||||
def lookup(repo, id) do
|
||||
case :geef_commit.lookup(repo, id) do
|
||||
@@ -11,7 +12,7 @@ defmodule Geef.Commit do
|
||||
end
|
||||
|
||||
def tree_id(commit = Object[type: :commit]) do
|
||||
:geef_commit.tree_id(set_elem(commit, 0, :geef_object))
|
||||
:geef_commit.tree_id(rebind(commit))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
defrecord Geef.Object, Record.extract(:geef_object, from: "src/geef_records.hrl") do
|
||||
|
||||
@doc false
|
||||
defmacro rebind(obj) do
|
||||
quote do
|
||||
set_elem(unquote(obj), 0, :geef_object)
|
||||
end
|
||||
end
|
||||
|
||||
def lookup(repo, id) do
|
||||
case :geef_obj.lookup(repo, id) do
|
||||
{:ok, obj} ->
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
defmodule Geef.Tag do
|
||||
alias Geef.Object
|
||||
import :macros, Object
|
||||
|
||||
def peel(tag = Object[type: :tag]) do
|
||||
case :geef_tag.peel(set_elem(tag, 0, :geef_object)) do
|
||||
case :geef_tag.peel(rebind(tag)) do
|
||||
{:ok, peeled} ->
|
||||
{:ok, Object.new peeled}
|
||||
error ->
|
||||
|
||||
@@ -4,6 +4,8 @@ defmodule Geef.Tree do
|
||||
alias Geef.Object
|
||||
alias Geef.TreeEntry
|
||||
|
||||
import :macros, Geef.Object
|
||||
|
||||
def lookup(repo, id) do
|
||||
case :geef_tree.lookup(repo, id) do
|
||||
{:ok, obj} ->
|
||||
@@ -14,7 +16,7 @@ defmodule Geef.Tree do
|
||||
end
|
||||
|
||||
def get(tree = Object[type: :tree], path) do
|
||||
case :geef_tree.get(set_elem(tree, 0, :geef_object), path) do
|
||||
case :geef_tree.get(rebind(tree), path) do
|
||||
{:ok, entry} ->
|
||||
{:ok, TreeEntry.new entry}
|
||||
error ->
|
||||
|
||||
Reference in New Issue
Block a user