docs: function $componentMapperFactory() {
  
    var DEFAULT_SUFFIX = 'Controller';
  
    var componentToCtrl = function componentToCtrlDefault(name) {
      return name[0].toUpperCase() + name.substr(1) + DEFAULT_SUFFIX;
    };
  
    var componentToTemplate = function componentToTemplateDefault(name) {
      var snakeName = snakeCase(name);
      return 'generated/components/' + snakeName + '/' + snakeName + '.html';
    };
  
    var ctrlToComponent = function ctrlToComponentDefault(name) {
      return name[0].toLowerCase() + name.substr(1, name.length - DEFAULT_SUFFIX.length - 1);
    };
  
    var componentToControllerAs = function componentToControllerAsDefault(name) {
      return name;
    };
  
    return {
      controllerName: function (name) {
        return componentToCtrl(name);
      },
  
      controllerAs: function (name) {
        return componentToControllerAs(name);
      },
  
      template: function (name) {
        return componentToTemplate(name);
      },
  
      component: function (name) {
        return ctrlToComponent(name);
      },
  
      /**
       * @name $componentMapper#setCtrlNameMapping
       * @description takes a function for mapping component names to component controller names
       */
      setCtrlNameMapping: function(newFn) {
        componentToCtrl = newFn;
        return this;
      },
  
      /**
       * @name $componentMapper#setCtrlAsMapping
       * @description takes a function for mapping component names to controllerAs name in the template
       */
      setCtrlAsMapping: function(newFn) {
        componentToControllerAs = newFn;
        return this;
      },
  
      /**
       * @name $componentMapper#setComponentFromCtrlMapping
       * @description takes a function for mapping component controller names to component names
       */
      setComponentFromCtrlMapping: function (newFn) {
        ctrlToComponent = newFn;
        return this;
      },
  
      /**
       * @name $componentMapper#setTemplateMapping
       * @description takes a function for mapping component names to component template URLs
       */
      setTemplateMapping: function(newFn) {
        componentToTemplate = newFn;
        return this;
      }
    };
  }