Adopt Access behaviours to Geef.Object instead of implementing the deprecated Access protocol
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user