From b2adb24079fdcbef552f946099bb7ae5ba9f331a Mon Sep 17 00:00:00 2001 From: mingshun Date: Sat, 3 Oct 2015 20:29:25 +0800 Subject: [PATCH] Adopt Access behaviours to Geef.Object instead of implementing the deprecated Access protocol --- lib/geef/object.ex | 24 ++++++++++++++++++++++++ lib/geef/tree.ex | 25 ------------------------- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/lib/geef/object.ex b/lib/geef/object.ex index b2a5d12..4845d52 100644 --- a/lib/geef/object.ex +++ b/lib/geef/object.ex @@ -1,6 +1,10 @@ require Record defmodule Geef.Object do + @behaviour Access + alias Geef.Object + alias Geef.Tree + defstruct type: nil, id: nil, handle: nil def lookup(repo, id) do @@ -32,4 +36,24 @@ defmodule Geef.Object do 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 diff --git a/lib/geef/tree.ex b/lib/geef/tree.ex index 854e695..a0500e4 100644 --- a/lib/geef/tree.ex +++ b/lib/geef/tree.ex @@ -33,31 +33,6 @@ defmodule Geef.Tree do 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 defexception [reason: nil]