Code coverage report for harmonizer/util/extend.js

Statements: 100% (16 / 16)      Branches: 75% (3 / 4)      Functions: 100% (1 / 1)      Lines: 100% (16 / 16)      Ignored: none     

All files » harmonizer/util/ » extend.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  1 1 1 1 1 1 1 1 29 1 1 1 1 1 1   29  
'use strict';
var objectPatternB = require('nodes');
var nodes = objectPatternB.nodes;
var objectPatternA = require('./id');
var getUniqueName = objectPatternA.getUniqueName;
var objectPattern = require('./string');
var express = objectPattern.express;
var extend = 'function (SuperClass, Class, prototype, members) {\n  var descriptors = function(object) {\n    var base = {}, descriptor;\n    for (var key in object) {\n      descriptor = Object.getOwnPropertyDescriptor(object, key);\n      if (!(\'get\' in descriptor) && !(\'set\' in descriptor)) {\n        descriptor.enumerable = false;\n      }\n      base[key] = descriptor;\n    }\n    return base;\n  };\n\n  if (SuperClass) Class.__proto__ = SuperClass;\n  Object.defineProperty(Class, \'prototype\', {\n    value: Object.create(SuperClass === null ? null : SuperClass.prototype, descriptors(prototype))\n  });\n\n  Object.defineProperty(Class.prototype, \'constructor\', { value: Class });\n\n  if (members) Object.defineProperties(Class, descriptors(members));\n  return Class;\n}';
exports.getExtendId = function (node) {
  if (!node.extendId) {
    var extendName = getUniqueName(node, 'extend');
    var declaration = express('var ' + extendName + ' = ' + extend);
    var id = declaration.declarations[0].id;
    var body = nodes.Function.test(node) ? node.body.body : node.body;
    body.unshift(declaration);
    node.extendId = id;
  }
  return node.extendId;
};