-
Notifications
You must be signed in to change notification settings - Fork 48
/
Copy pathclass-builder.js
45 lines (38 loc) · 1.12 KB
/
class-builder.js
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
function ClassBuilder(options) {
this.elemDelim = options.elem || '__';
this.modDelim = typeof options.mod === 'string' ?
{
name: options.mod || '_',
val: options.mod || '_'
} :
{
name: options.mod && options.mod.name || '_',
val: options.mod && options.mod.val || '_'
};
}
exports.ClassBuilder = ClassBuilder;
ClassBuilder.prototype.build = function(block, elem) {
if (!elem)
return block;
else
return block + this.elemDelim + elem;
};
ClassBuilder.prototype.buildModPostfix = function(modName, modVal) {
var res = this.modDelim.name + modName;
if (modVal !== true) res += this.modDelim.val + modVal;
return res;
};
ClassBuilder.prototype.buildBlockClass = function(name, modName, modVal) {
var res = name;
if (modVal) res += this.buildModPostfix(modName, modVal);
return res;
};
ClassBuilder.prototype.buildElemClass = function(block, name, modName, modVal) {
return this.buildBlockClass(block) +
this.elemDelim +
name +
this.buildModPostfix(modName, modVal);
};
ClassBuilder.prototype.split = function(key) {
return key.split(this.elemDelim, 2);
};