import Vue from 'vue';

const requireComponent = require.context('./components', true, /\.vue$/);

// Registro automático de componentes:
//  e.g. components/foo/bar/UnComponente.vue
//       se registra como 'foo-bar-un-componente'
requireComponent.keys().forEach(fileName => {
    // Get the component config
    const componentConfig = requireComponent(fileName);
    // Get the PascalCase name of the component
    const componentName = fileName
        .replace(/^\.\/(.*)\.\w+$/, '$1')    // Remove "./" from the beginning and the file extension from the end
        .replace(/\//g, '-')                 // Replace directories with hyphens
        .replace(/([a-z])([A-Z])/g, '$1-$2') // Insert hyphen between camelCase words
        .toLowerCase()                       // Convert to lowercase
    // Globally register the component
    Vue.component(
        componentName,
        // Look for the component options on `.default`, which will
        // exist if the component was exported with `export default`,
        // otherwise fall back to module's root.
        componentConfig.default || componentConfig
    );
});