defined-info.js 897 B

12345678910111213141516171819202122232425262728293031
  1. 'use strict'
  2. var Info = require('./info')
  3. var types = require('./types')
  4. module.exports = DefinedInfo
  5. DefinedInfo.prototype = new Info()
  6. DefinedInfo.prototype.defined = true
  7. function DefinedInfo(property, attribute, mask, space) {
  8. mark(this, 'space', space)
  9. Info.call(this, property, attribute)
  10. mark(this, 'boolean', check(mask, types.boolean))
  11. mark(this, 'booleanish', check(mask, types.booleanish))
  12. mark(this, 'overloadedBoolean', check(mask, types.overloadedBoolean))
  13. mark(this, 'number', check(mask, types.number))
  14. mark(this, 'commaSeparated', check(mask, types.commaSeparated))
  15. mark(this, 'spaceSeparated', check(mask, types.spaceSeparated))
  16. mark(this, 'commaOrSpaceSeparated', check(mask, types.commaOrSpaceSeparated))
  17. }
  18. function mark(values, key, value) {
  19. if (value) {
  20. values[key] = value
  21. }
  22. }
  23. function check(value, mask) {
  24. return (value & mask) === mask
  25. }