forked from NatLabRockies/nodehaystack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHVal.js
More file actions
79 lines (72 loc) · 1.7 KB
/
HVal.js
File metadata and controls
79 lines (72 loc) · 1.7 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//
// Copyright (c) 2015, Shawn Jacobson
// Licensed under the Academic Free License version 3.0
//
// Ported from @see {@link https://bitbucket.org/brianfrank/haystack-java|Haystack Java Toolkit}
//
// History:
// 21 Mar 2015 Shawn Jacobson Creation
//
/**
* HVal is the base class for representing haystack tag
* scalar values as an immutable class.
* @see {@link http://project-haystack.org/doc/TagModel#tagKinds|Project Haystack}
*
* @constructor
* @private
* @abstract
*/
function HVal() {
}
module.exports = HVal;
/**
* String format is for human consumption only
* @return {string}
*/
HVal.prototype.toString = function() {
return this.toZinc();
};
/**
* Return sort order as negative, 0, or positive
* @param {HVal} that - HVal to compare to
* @return {int}
*/
HVal.prototype.compareTo = function(that) {
return this.toString().localeCompare(that);
};
/**
* Encode value to zinc format
* @abstract
* @return {string}
*/
HVal.prototype.toZinc = function() {
throw new Error('must be implemented by subclass!');
};
/**
* Encode value to JSON format
* @abstract
* @return {string}
*/
HVal.prototype.toJSON = function() {
throw new Error('must be implemented by subclass!');
};
/**
* Equality is value based
* @abstract
* @return {boolean}
*/
HVal.prototype.equals = function() {
throw new Error('must be implemented by subclass!');
};
HVal.startsWith = function(s, prefix) {
return s.substring(0, prefix.length) === prefix;
};
HVal.endsWith = function(s, suffix) {
return s.substring(s.length - suffix.length) === suffix;
};
HVal.typeis = function(check, prim, obj) {
return typeof(check) === prim || check instanceof obj;
};
HVal.cc = function(c) {
return c.charCodeAt(0);
};