forked from nodegit/nodegit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreference.js
More file actions
63 lines (53 loc) · 1.32 KB
/
reference.js
File metadata and controls
63 lines (53 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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();
}