all files / src/ registry-class.js

70% Statements 14/20
42.86% Branches 6/14
100% Functions 0/0
68.42% Lines 13/19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30   48× 48× 48×     48× 48× 48×                         48×    
let inspect = require("util").inspect;
let mapClass;
// Para evitar que nuevas llamadas sobreescriban el map
mapClass = mapClass || new Map();
let addMapClass = (key, clss) => mapClass[key] = clss;
let findClass = (value) => {
  let className = value.constructor.name;
  let currClass = mapClass[className];
  Iif(className === 'Object') {
    currClass = mapClass[value.type];
  }
  let params;
  Eif((className === 'Number') || (className === 'String')){
    params = [String(value)];
  }
  else {
    if(className === 'Object'){
      if(value.type && value.params) {
        let {className, currClass} = findClass(value.params[0]);
        params = [new currClass(value.params[0]), ...value.params.slice(1)];
      }
      else {
        throw new Error(inspect(value) + "type and params attr required");
      }
    }
  }
  return {className, currClass, params};
};
module.exports = { addMapClass, findClass};