-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuilder.js
More file actions
108 lines (76 loc) · 2.6 KB
/
builder.js
File metadata and controls
108 lines (76 loc) · 2.6 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
teishi/builder - v1.0.0
Written by Parya Rastegar (rastegar.parya3@gmail.com) and released into the public domain.
Human-readable rule builder for teishi. Please refer to readme.md for documentation.
*/
(function () {
// *** SETUP ***
var isNode = typeof exports === 'object';
var teishi = isNode ? require ('./teishi.js') : window.teishi;
if (isNode) var builder = exports;
else var builder = teishi;
// *** TYPE BUILDER ***
builder.isType = function (name, value, type) {
return [name, value, type];
};
builder.isString = function (name, value) {
return [name, value, 'string'];
};
builder.isInteger = function (name, value) {
return [name, value, 'integer'];
};
builder.isFloat = function (name, value) {
return [name, value, 'float'];
};
builder.isArray = function (name, value) {
return [name, value, 'array'];
};
builder.isObject = function (name, value) {
return [name, value, 'object'];
};
builder.isFunction = function (name, value) {
return [name, value, 'function'];
};
builder.isBoolean = function (name, value) {
return [name, value, 'boolean'];
};
builder.isUndefined = function (name, value) {
return [name, value, 'undefined'];
};
builder.isNull = function (name, value) {
return [name, value, 'null'];
};
builder.isRegex = function (name, value) {
return [name, value, 'regex'];
};
builder.isDate = function (name, value) {
return [name, value, 'date'];
};
// *** MULTI BUILDER ***
builder.isOneOf = function (name, value, options, test) {
return [name, value, options, test || teishi.test.type, 'oneOf'];
};
builder.isEach = function (name, value, type, test) {
return [name, value, type, test || teishi.test.type, 'each'];
};
builder.isEachOf = function (name, value, types) {
return [name, value, types, test || teishi.test.type, 'eachOf'];
};
// *** TEST BUILDER ***
builder.equal = function (name, value, expected) {
return [name, value, expected, teishi.test.equal];
};
builder.notEqual = function (name, value, expected) {
return [name, value, expected, teishi.test.notEqual];
};
builder.isInRange = function (name, value, range) {
return [name, value, range, teishi.test.range];
};
builder.match = function (name, value, regex) {
return [name, value, regex, teishi.test.match];
};
// *** CONDITIONAL BUILDER ***
builder.optional = function (name, value, rule) {
return [teishi.type (value) !== 'undefined', [rule]];
};
}) ();