settings-store.user.js

Exalea - Settings Store pour le P.D.O.

Versione datata 12/08/2014. Vedi la nuova versione l'ultima versione.

Questo script non dovrebbe essere installato direttamente. È una libreria per altri script da includere con la chiave // @require https://update.greasyfork.org/scripts/4099/13111/settings-storeuserjs.js

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

/**
 *  Prototype d'une SettingsStore (Singleton)
 */
{
    /**
     *  Constructeur
     *
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *  @constructor
     *
     *  @author Exalea
     */
    var SettingsStore = function () {
        /**
         *  Liste des paramètres disponibles (de type SettingEntry)
         *
         *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
         *
         *  @author Exalea
         */
        this.entries = {};
        return this;
    };

    /**
     *  Ajout d'un paramètre de type SettingEntry au store
     *
     *  @param {string} name Nom attribué au paramètre
     *  @param {SettingEntry} entry Paramètre à ajouter
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.addEntry = function (name, entry) {
        this.entries[name] = entry;
        return this;
    };

    /**
     *
     *  Ajout d'un paramètre via un nom, une clef (identifiant unique) de persistence et une valeur par défaut
     *
     *  @param {string} name Nom attribué au paramètre
     *  @param {string} key Clef de persistence du paramètre
     *  @param {string} defaultValue Valeur par défaut du paramètre
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.add = function (name, key, defaultValue) {
        this.addEntry(name, new SettingEntry(key, defaultValue));
        return this;
    };

    /**
     *  Initialisation (à leur valeur persistée si existante, sinon à leur valeur par défaut) de chacun des paramètres ajoutés au SettingsStore
     *
     *  @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
     *
     *  @author Exalea
     */
    SettingsStore.prototype.init = function () {
        for (var index in this.entries) {
            var entry = this.entries[index];
            if (entry instanceof SettingEntry)
                entry.init();
        }
        return this;
    };

    /**
     *  Implémentation du pattern Singleton
     *
     *  @returns {SettingsStore}
     */
    SettingsStore.getInstance = function () {
        if (SettingsStore.instance == null)
            SettingsStore.instance = new SettingsStore();
        return SettingsStore.instance;
    };

    /**
     *  Sucre syntaxique : ajout d'un accès statique aux méthodes du Singleton
     */
    {
        SettingsStore.addEntry = function (name, entry) {
            return SettingsStore.getInstance().addEntry(name, entry);
        };

        SettingsStore.add = function (name, key, defaultValue) {
            return SettingsStore.getInstance().add(name, key, defaultValue);
        };

        SettingsStore.init = function () {
            return SettingsStore.getInstance().init();
        };
    }
}