Adopt Access behaviours to Geef.Object instead of implementing the deprecated Access protocol

This commit is contained in:
mingshun
2015-10-03 20:29:25 +08:00
parent 9621cc5b26
commit b2adb24079
2 changed files with 24 additions and 25 deletions

View File

@@ -1,6 +1,10 @@
require Record require Record
defmodule Geef.Object do defmodule Geef.Object do
@behaviour Access
alias Geef.Object
alias Geef.Tree
defstruct type: nil, id: nil, handle: nil defstruct type: nil, id: nil, handle: nil
def lookup(repo, id) do def lookup(repo, id) do
@@ -32,4 +36,24 @@ defmodule Geef.Object do
end end
end end
def fetch(tree = %Object{type: :tree}, key) when is_number(key) do
Tree.nth(tree, key)
end
def fetch(tree = %Object{type: :tree}, key) do
Tree.get(tree, key)
end
def get(tree = %Object{type: :tree}, key) do
case fetch(tree, key) do
{:ok, entry} -> entry
{:error, _} -> nil
end
end
# Git data is immutable
def get_and_update(_tree, _key, _fun) do
raise ArgumentError
end
end end

View File

@@ -33,31 +33,6 @@ defmodule Geef.Tree do
end end
defimpl Access, for: Geef.Object do
alias Geef.Object
alias Geef.Tree
def get(tree = %Object{type: :tree}, key) when is_number(key) do
case Tree.nth(tree, key) do
{:ok, entry} -> entry
{:error, _} -> nil
end
end
def get(tree = %Object{type: :tree}, key) do
case Tree.get(tree, key) do
{:ok, entry} -> entry
{:error, _} -> nil
end
end
# Git data is immutable
def get_and_update(_tree, _key, _fun) do
raise ArgumentError
end
end
defmodule Geef.TreeError do defmodule Geef.TreeError do
defexception [reason: nil] defexception [reason: nil]