Wrap the rest of the object modules in elixir

This commit is contained in:
Carlos Martín Nieto
2013-06-06 11:14:57 +02:00
parent f82f47c025
commit 267353ea21
8 changed files with 76 additions and 15 deletions

15
lib/geef.ex Normal file
View File

@@ -0,0 +1,15 @@
defmodule Geef do
defmacro __using__(_) do
quote do
alias Geef.Repository
alias Geef.Reference
alias Geef.Object
alias Geef.Commit
alias Geef.Tree
alias Geef.Blob
alias Geef.Tag
end
end
end

21
lib/geef/blob.ex Normal file
View File

@@ -0,0 +1,21 @@
defmodule Geef.Blob do
alias Geef.Object
def lookup(repo, id) do
case :geef_obj.lookup(repo, id) do
{:ok, obj} ->
{:ok, Object.new obj}
error ->
error
end
end
def size(obj = Object[type: :blob]) do
:geef_blob.size(set_elem(obj, 0, :geef_object))
end
def content(obj = Object[type: :blob]) do
:geef_blob.content(set_elem(obj, 0, :geef_object))
end
end

17
lib/geef/commit.ex Normal file
View File

@@ -0,0 +1,17 @@
defmodule Geef.Commit do
alias Geef.Object
def lookup(repo, id) do
case :geef_commit.lookup(repo, id) do
{:ok, commit} ->
{:ok, Object.new commit}
error ->
error
end
end
def tree_id(commit = Object[type: :commit]) do
:geef_commit.tree_id(set_elem(commit, 0, :geef_object))
end
end

View File

@@ -3,5 +3,7 @@ defmodule Geef.Odb do
:geef_odb.exists(pid, id)
end
def write(pid, content, type), do: :geef_odb.write(pid, content, type)
def stop(pid), do: :geef_odb.stop(pid)
end

17
lib/geef/tree.ex Normal file
View File

@@ -0,0 +1,17 @@
defmodule Geef.Tree do
alias Geef.Object
def lookup(repo, id) do
case :geef_tree.lookup(repo, id) do
{:ok, obj} ->
{:ok, Object.new obj}
error ->
error
end
end
def get(tree = Object[type: :tree], path) do
:geef_tree.get(set_elem(tree, 0, :geef_object), path)
end
end