From ac3d2d03feffff1c3cbd89cac2c952dd58f3a40f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Wed, 5 Jun 2013 21:14:04 +0200 Subject: [PATCH] Rename the ref record to geef_reference Remove the access hacks for elixir and make :geef_reference an elixir macro as well. --- lib/geef/reference.ex | 4 +++- src/geef_records.hrl | 4 ++-- src/geef_ref.erl | 29 ++++++++--------------------- test/repo_test.erl | 4 ++-- 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/lib/geef/reference.ex b/lib/geef/reference.ex index 2266989..2c4bac5 100644 --- a/lib/geef/reference.ex +++ b/lib/geef/reference.ex @@ -1,3 +1,5 @@ +defrecord :geef_reference, Record.extract(:geef_reference, from: "src/geef_records.hrl") + defmodule Geef.Reference do alias Geef.Repository @@ -21,4 +23,4 @@ defmodule Geef.Reference do end end -end \ No newline at end of file +end diff --git a/src/geef_records.hrl b/src/geef_records.hrl index 5a488ec..389c8a9 100644 --- a/src/geef_records.hrl +++ b/src/geef_records.hrl @@ -1,4 +1,4 @@ --record(geef_ref, {handle, name :: binary(), type :: atom(), target :: binary() | geef_oid()}). +-record(geef_reference, {handle, name :: binary(), type :: atom(), target :: binary() | geef_oid()}). -record(geef_oid, {oid}). -record(geef_object, {type :: atom(), handle}). -record(geef_index_entry, @@ -12,7 +12,7 @@ -record(geef_request, {service :: atom, path :: binary(), host :: binary()}). --type geef_ref() :: #geef_ref{}. +-type geef_reference() :: #geef_reference{}. -type geef_oid() :: #geef_oid{}. -type geef_object() :: #geef_object{}. -type geef_index_entry() :: #geef_index_entry{}. diff --git a/src/geef_ref.erl b/src/geef_ref.erl index 553eb2c..a129ac3 100644 --- a/src/geef_ref.erl +++ b/src/geef_ref.erl @@ -1,10 +1,10 @@ -module(geef_ref). --export([lookup/2, resolve/1, create/4, name/1, type/1, target/1]). +-export([lookup/2, resolve/1, create/4]). -include("geef_records.hrl"). --spec new(binary(), term()) -> geef_ref(). +-spec new(binary(), term()) -> geef_reference(). new(Name, Handle) -> Type = geef_nif:reference_type(Handle), Bin = geef_nif:reference_target(Handle), @@ -14,15 +14,14 @@ new(Name, Handle) -> oid -> #geef_oid{oid=Bin} end, - #geef_ref{handle=Handle, name=Name, type=Type, target=Target}. + #geef_reference{handle=Handle, name=Name, type=Type, target=Target}. --spec create(pid(), iolist(), geef_oid() | binary(), boolean()) -> {ok, geef_ref()} | {error, term()} -. +-spec create(pid(), iolist(), geef_oid() | binary(), boolean()) -> {ok, geef_reference()} | {error, term()}. create(Repo, Refname, Target, Force) -> {ok, Ref} = geef_repo:create_reference(Repo, Refname, Target, Force), {ok, new(Refname, Ref)}. --spec lookup(pid(), iolist()) -> {ok, geef_ref()} | {error, term()}. +-spec lookup(pid(), iolist()) -> {ok, geef_reference()} | {error, term()}. lookup(Repo, Refname) -> Name = iolist_to_binary(Refname), case geef_repo:lookup_reference(Repo, Name) of @@ -32,10 +31,10 @@ lookup(Repo, Refname) -> Other end. --spec resolve(geef_ref()) -> {ok, geef_ref()} | {error, term()}. -resolve(Ref = #geef_ref{type=oid}) -> +-spec resolve(geef_reference()) -> {ok, geef_reference()} | {error, term()}. +resolve(Ref = #geef_reference{type=oid}) -> {ok, Ref}; % resolving an oid ref is a no-op, skip going into the NIF -resolve(#geef_ref{handle=Handle}) -> +resolve(#geef_reference{handle=Handle}) -> case geef_nif:reference_resolve(Handle) of {ok, Ref} -> {ok, Name} = geef_nif:reference_name(Ref), @@ -43,15 +42,3 @@ resolve(#geef_ref{handle=Handle}) -> Other -> Other end. - --spec target(geef_ref()) -> {geef_oid(), binary()}. -target(#geef_ref{target=Target}) -> - Target. - --spec type(geef_ref()) -> symbolic | oid. -type(#geef_ref{type=Type}) -> - Type. - --spec name(geef_ref()) -> binary(). -name(#geef_ref{name=Name}) -> - Name. diff --git a/test/repo_test.erl b/test/repo_test.erl index a036315..711b39b 100644 --- a/test/repo_test.erl +++ b/test/repo_test.erl @@ -42,8 +42,8 @@ create_ref_test(Repo) -> {ok, _} = geef_ref:create(Repo, "refs/heads/other", "refs/heads/branch", true), {ok, Ref0} = geef_ref:lookup(Repo, "refs/heads/branch"), {ok, Ref1} = geef_ref:lookup(Repo, "refs/heads/other"), - [?_assertEqual(Ref0#geef_ref.target, Id), - ?_assertEqual(Ref1#geef_ref.target, <<"refs/heads/branch">>)]. + [?_assertEqual(Ref0#geef_reference.target, Id), + ?_assertEqual(Ref1#geef_reference.target, <<"refs/heads/branch">>)]. rm_r(Path) -> case filelib:is_dir(Path) of