'use strict' var Info = require('./info') var types = require('./types') module.exports = DefinedInfo DefinedInfo.prototype = new Info() DefinedInfo.prototype.defined = true function DefinedInfo(property, attribute, mask, space) { mark(this, 'space', space) Info.call(this, property, attribute) mark(this, 'boolean', check(mask, types.boolean)) mark(this, 'booleanish', check(mask, types.booleanish)) mark(this, 'overloadedBoolean', check(mask, types.overloadedBoolean)) mark(this, 'number', check(mask, types.number)) mark(this, 'commaSeparated', check(mask, types.commaSeparated)) mark(this, 'spaceSeparated', check(mask, types.spaceSeparated)) mark(this, 'commaOrSpaceSeparated', check(mask, types.commaOrSpaceSeparated)) } function mark(values, key, value) { if (value) { values[key] = value } } function check(value, mask) { return (value & mask) === mask }