JSFiddle - React, Tailwind, and code Playground

by amatiasq

HTML

<script src="http://amatiasq.com/fiddle-console.js"></script>

JavaScript

var miPlugin = {
    // un sistema de plugins más avanzado pasaría un objeto a esta funcion
    // con el que el plugin pueda pedir cosas al programa principal
    iniciar: function() {
        console.log('plugin en marcha');
    },
    detener: function() {
        console.log('plugin detenido');
    },
};

var maestro = {
    plugins: {},
    registrarPlugin: function(nombre, objeto) {
        this.plugins[nombre] = objeto;
    },
    iniciarPlugin: function(nombre) {
        this.validarPlugin(nombre);
        this.plugins[nombre].iniciar();
    },
    detenerPlugin: function(nombre) {
        this.validarPlugin(nombre);
        this.plugins[nombre].detener();        
    },
    validarPlugin: function(nombre) {
        if (!this.plugins[nombre])
            throw new Error('[ERROR] Plugin ' + nombre + ' no encontrado');
    },
};

maestro.registrarPlugin('miPlugin', miPlugin);
maestro.iniciarPlugin('miPlugin');
maestro.detenerPlugin('miPlugin');