var git = require('../'),
Reference = git.Refs;
// Backwards compatibility.
Object.defineProperty(git, "Reference", {
value: Reference,
enumerable: false
});
var oldSymbolicTarget = Reference.prototype.symbolicTarget,
oldTarget = Reference.prototype.target;
Reference.Type = {
Oid: 1,
Symbolic: 2,
All: 3
};
/**
* Returns true if this reference is not symbolic
* @return {Boolean}
*/
Reference.prototype.isConcrete = function() {
return this.type() == Reference.Type.Oid;
};
/**
* Returns true if this reference is symbolic
* @return {Boolean}
*/
Reference.prototype.isSymbolic = function() {
return this.type() == Reference.Type.Symbolic;
};
/**
* Returns the target of this symbolic reference.
* @return {Reference}
* @throws if the target is not symbolic.
*/
Reference.prototype.symbolicTarget = function() {
if (!this.isSymbolic()) throw this.name() + " is not symbolic";
return oldSymbolicTarget.call(this);
};
/**
* Returns the oid of this non-symbolic reference.
* @return {Oid}
* @throws if the target is symbolic.
*/
Reference.prototype.target = function() {
if (!this.isConcrete()) throw this.name() + " is symbolic";
return oldTarget.call(this);
};
/**
* Returns the name of the reference.
* @return {String}
*/
Reference.prototype.toString = function() {
return this.name();
}