Use elixir names for elixir records
Follow the example set by elixir's use of FileInfo and use elixir-y names for refs and objects, and convert them to :geef_reference and :geef_object when we pass them down to erlang geef.
This commit is contained in:
@@ -1,10 +1,16 @@
|
||||
defrecord :geef_object, Record.extract(:geef_object, from: "src/geef_records.hrl")
|
||||
defrecord Geef.Object, Record.extract(:geef_object, from: "src/geef_records.hrl") do
|
||||
|
||||
defmodule Geef.Object do
|
||||
|
||||
def lookup(repo, id), do: :geef_obj.lookup(repo, id)
|
||||
def lookup!(repo, id) do
|
||||
def lookup(repo, id) do
|
||||
case :geef_obj.lookup(repo, id) do
|
||||
{:ok, obj} ->
|
||||
{:ok, Geef.Object.new obj}
|
||||
error ->
|
||||
error
|
||||
end
|
||||
end
|
||||
|
||||
def lookup!(repo, id) do
|
||||
case lookup(repo, id) do
|
||||
{:ok, obj} ->
|
||||
obj
|
||||
{:error, err} ->
|
||||
@@ -12,7 +18,4 @@ defmodule Geef.Object do
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def lookup(repo, id, type), do: :geef_obj.lookup(repo, id, type)
|
||||
|
||||
end
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
defrecord :geef_reference, Record.extract(:geef_reference, from: "src/geef_records.hrl")
|
||||
|
||||
defmodule Geef.Reference do
|
||||
defrecord Geef.Reference, Record.extract(:geef_reference, from: "src/geef_records.hrl") do
|
||||
alias Geef.Repository
|
||||
|
||||
def lookup(repo, name), do: :geef_ref.lookup(repo, name)
|
||||
def lookup(repo, name) do
|
||||
case :geef_ref.lookup(repo, name) do
|
||||
{:ok, ref} ->
|
||||
{:ok, Geef.Reference.new ref}
|
||||
error ->
|
||||
error
|
||||
end
|
||||
end
|
||||
|
||||
def lookup!(repo, name) do
|
||||
case lookup(repo, name) do
|
||||
{:ok, ref} ->
|
||||
@@ -13,9 +19,17 @@ defmodule Geef.Reference do
|
||||
end
|
||||
end
|
||||
|
||||
def resolve(ref), do: :geef_ref.resolve(ref)
|
||||
def resolve!(ref) do
|
||||
case :geef_ref.resolve(ref) do
|
||||
def resolve(ref = Geef.Reference[]) do
|
||||
case :geef_ref.resolve(set_elem(ref, 0, :geef_reference)) do
|
||||
{:ok, ref} ->
|
||||
{:ok, Geef.Reference.new ref}
|
||||
error ->
|
||||
error
|
||||
end
|
||||
end
|
||||
|
||||
def resolve!(ref = Geef.Reference[]) do
|
||||
case resolve(ref) do
|
||||
{:ok, resolved} ->
|
||||
resolved
|
||||
{:error, err} ->
|
||||
|
||||
20
lib/geef/tag.ex
Normal file
20
lib/geef/tag.ex
Normal file
@@ -0,0 +1,20 @@
|
||||
defmodule Geef.Tag do
|
||||
alias Geef.Object
|
||||
|
||||
def peel(tag = Object[type: :tag]) do
|
||||
case :geef_tag.peel(set_elem(tag, 0, :geef_object)) do
|
||||
{:ok, peeled} ->
|
||||
{:ok, Object.new peeled}
|
||||
error ->
|
||||
error
|
||||
end
|
||||
end
|
||||
|
||||
def peel!(tag = Object[type: :tag]) do
|
||||
case peel(tag) do
|
||||
{:ok, peeled} -> peeled
|
||||
{:error, err} -> raise err
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user