add-property.js 769 B

1234567891011121314151617181920212223242526272829
  1. var utils = require('../utils')
  2. , nodes = require('../nodes');
  3. /**
  4. * Add property `name` with the given `expr`
  5. * to the mixin-able block.
  6. *
  7. * @param {String|Ident|Literal} name
  8. * @param {Expression} expr
  9. * @return {Property}
  10. * @api public
  11. */
  12. (module.exports = function addProperty(name, expr){
  13. utils.assertType(name, 'expression', 'name');
  14. name = utils.unwrap(name).first;
  15. utils.assertString(name, 'name');
  16. utils.assertType(expr, 'expression', 'expr');
  17. var prop = new nodes.Property([name], expr);
  18. var block = this.closestBlock;
  19. var len = block.nodes.length
  20. , head = block.nodes.slice(0, block.index)
  21. , tail = block.nodes.slice(block.index++, len);
  22. head.push(prop);
  23. block.nodes = head.concat(tail);
  24. return prop;
  25. }).raw = true;