From 8a96f4732eeca628ba5b12e3bf6d2e3af7fbc328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Tue, 29 Jan 2013 01:38:15 +0100 Subject: [PATCH] Add the #oid{} record to differentiate from a formatted hash --- src/geef_oid.erl | 10 ++++++---- src/geef_records.hlr | 2 ++ src/geef_ref.erl | 9 ++++++--- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/geef_oid.erl b/src/geef_oid.erl index 075a85c..e5f976d 100644 --- a/src/geef_oid.erl +++ b/src/geef_oid.erl @@ -1,12 +1,14 @@ -module(geef_oid). +-include("geef_records.hlr"). -export([parse/1, fmt/1]). --spec fmt(binary()) -> binary(). -fmt(Oid) -> +-spec fmt(oid()) -> binary(). +fmt(#oid{oid=Oid}) -> geef:oid_fmt(Oid). --spec parse(binary()) -> binary(). +-spec parse(binary()) -> oid(). parse(Sha) -> - geef:oid_parse(Sha). + Oid = geef:oid_parse(Sha), + #oid{oid=Oid}. diff --git a/src/geef_records.hlr b/src/geef_records.hlr index 2d033f4..a1e7971 100644 --- a/src/geef_records.hlr +++ b/src/geef_records.hlr @@ -1,7 +1,9 @@ -record(ref, {handle, type :: atom()}). -record(repo, {handle}). -record(odb, {handle}). +-record(oid, {oid}). -type ref() :: #ref{}. -type repo() :: #repo{}. -type odb() :: #odb{}. +-type oid() :: #oid{}. diff --git a/src/geef_ref.erl b/src/geef_ref.erl index eb4d70a..4d5645b 100644 --- a/src/geef_ref.erl +++ b/src/geef_ref.erl @@ -27,6 +27,9 @@ resolve(#ref{handle=Handle}) -> Other end. --spec target(ref()) -> binary(). -target(#ref{handle=Handle}) -> - geef:reference_target(Handle). +-spec target(ref()) -> binary() | oid(). +target(#ref{handle=Handle,type=symbolic}) -> + geef:reference_target(Handle); +target(#ref{handle=Handle,type=oid}) -> + Oid = geef:reference_target(Handle), + #oid{oid=Oid}.