visitExtendOn()

in lib/generator.js [1825:1870]


  visitExtendOn(extendOn, level, type = 'model') {
    if(!extendOn) {
      type === 'exception' ? this.emit(`dara.${CORE}Error\n`, level) : this.emit(`dara.Model\n`, level);
      return;
    }

    switch(_name(extendOn)) {
    case '$Error': 
      this.emit(`dara.${CORE}Error\n`, level);
      return;
    case '$ResponseError': 
      this.emit(`dara.ResponseError\n`, level);
      return;
    case '$Model': 
      this.emit(`dara.Model\n`, level);
      return;
    }
    
    if (extendOn.type === 'moduleModel') {
      const [moduleId, ...rest] = extendOn.path;
      this.emit(`${_importFilter(_name(moduleId).toLowerCase())}.`, level);
      this.emit('i');
      this.emit(rest.map((item) => {
        return _format(_name(item));
      }).join(''));
    } else if (extendOn.type === 'subModel') {
      this.emit(extendOn.path.map((item) => {
        return _format(_name(item));
      }).join(''), level);
      const [moduleId, ...rest] = extendOn.path;
      this.emit(`i${_format(_name(moduleId))}`);
      this.emit(rest.map((item) => {
        return _format(_name(item));
      }).join(''));
    } else {
      this.emit('i', level);
      if (extendOn.moduleName) {
        this.emit(`${_importFilter(_name(extendOn.moduleName).toLowerCase())}.`);
      }
      this.emit(`${_modelName(_format(_name(extendOn)))}`);
    }
    if(type === 'exception') {
      this.emit('Error');
    }
    this.emit('\n');
  }