// utility for enc
var consts_1 = require('./consts');
var vlEncDef = require('./encdef');
var util = require('./util');
var schema_1 = require('./schema/schema');
function countRetinal(enc) {
var count = 0;
if (enc.color)
count++;
if (enc.size)
count++;
if (enc.shape)
count++;
return count;
}
exports.countRetinal = countRetinal;
;
function has(enc, encType) {
var fieldDef = enc && enc[encType];
return fieldDef && fieldDef.name;
}
exports.has = has;
;
function isAggregate(enc) {
for (var k in enc) {
if (has(enc, k) && enc[k].aggregate) {
return true;
}
}
return false;
}
exports.isAggregate = isAggregate;
;
function forEach(enc, f) {
var i = 0;
schema_1.encTypes.forEach(function (k) {
if (has(enc, k)) {
f(enc[k], k, i++);
}
});
}
exports.forEach = forEach;
;
function map(enc, f) {
var arr = [];
schema_1.encTypes.forEach(function (k) {
if (has(enc, k)) {
arr.push(f(enc[k], k, enc));
}
});
return arr;
}
exports.map = map;
;
function reduce(enc, f, init) {
var r = init;
schema_1.encTypes.forEach(function (k) {
if (has(enc, k)) {
r = f(r, enc[k], k, enc);
}
});
return r;
}
exports.reduce = reduce;
;
function fields(enc) {
return reduce(enc, function (m, field) {
var fieldList = m[field.name] = m[field.name] || [], containsType = fieldList.containsType = fieldList.containsType || {};
Eif (fieldList.indexOf(field) === -1) {
fieldList.push(field);
containsType[field.type] = true;
}
return m;
}, {});
}
exports.fields = fields;
;
function shorthand(enc) {
return map(enc, function (field, et) {
return et + consts_1.Shorthand.Assign + vlEncDef.shorthand(field);
}).join(consts_1.Shorthand.Delim);
}
exports.shorthand = shorthand;
;
function fromShorthand(shorthand) {
var enc = util.isArray(shorthand) ? shorthand : shorthand.split(consts_1.Shorthand.Delim);
return enc.reduce(function (m, e) {
var split = e.split(consts_1.Shorthand.Assign), enctype = split[0].trim(), field = split[1];
m[enctype] = vlEncDef.fromShorthand(field);
return m;
}, {});
}
exports.fromShorthand = fromShorthand;
;
//# sourceMappingURL=enc.js.map |