settings-store.user.js

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

このスクリプトは単体で利用できません。右のようなメタデータを含むスクリプトから、ライブラリとして読み込まれます: // @require https://update.greatest.deepsurf.us/scripts/4099/13111/settings-storeuserjs.js

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
  1. /**
  2. * Prototype d'une SettingsStore (Singleton)
  3. */
  4. {
  5. /**
  6. * Constructeur
  7. *
  8. * @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
  9. * @constructor
  10. *
  11. * @author Exalea
  12. */
  13. var SettingsStore = function () {
  14. /**
  15. * Liste des paramètres disponibles (de type SettingEntry)
  16. *
  17. * @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
  18. *
  19. * @author Exalea
  20. */
  21. this.entries = {};
  22. return this;
  23. };
  24.  
  25. /**
  26. * Ajout d'un paramètre de type SettingEntry au store
  27. *
  28. * @param {string} name Nom attribué au paramètre
  29. * @param {SettingEntry} entry Paramètre à ajouter
  30. * @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
  31. *
  32. * @author Exalea
  33. */
  34. SettingsStore.prototype.addEntry = function (name, entry) {
  35. this.entries[name] = entry;
  36. return this;
  37. };
  38.  
  39. /**
  40. *
  41. * Ajout d'un paramètre via un nom, une clef (identifiant unique) de persistence et une valeur par défaut
  42. *
  43. * @param {string} name Nom attribué au paramètre
  44. * @param {string} key Clef de persistence du paramètre
  45. * @param {string} defaultValue Valeur par défaut du paramètre
  46. * @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
  47. *
  48. * @author Exalea
  49. */
  50. SettingsStore.prototype.add = function (name, key, defaultValue) {
  51. this.addEntry(name, new SettingEntry(key, defaultValue));
  52. return this;
  53. };
  54.  
  55. /**
  56. * Initialisation (à leur valeur persistée si existante, sinon à leur valeur par défaut) de chacun des paramètres ajoutés au SettingsStore
  57. *
  58. * @returns {SettingsStore} this Instance courante (permet l'utilisation de méthodes chaînées)
  59. *
  60. * @author Exalea
  61. */
  62. SettingsStore.prototype.init = function () {
  63. for (var index in this.entries) {
  64. var entry = this.entries[index];
  65. if (entry instanceof SettingEntry)
  66. entry.init();
  67. }
  68. return this;
  69. };
  70.  
  71. /**
  72. * Implémentation du pattern Singleton
  73. *
  74. * @returns {SettingsStore}
  75. */
  76. SettingsStore.getInstance = function () {
  77. if (SettingsStore.instance == null)
  78. SettingsStore.instance = new SettingsStore();
  79. return SettingsStore.instance;
  80. };
  81.  
  82. /**
  83. * Sucre syntaxique : ajout d'un accès statique aux méthodes du Singleton
  84. */
  85. {
  86. SettingsStore.addEntry = function (name, entry) {
  87. return SettingsStore.getInstance().addEntry(name, entry);
  88. };
  89.  
  90. SettingsStore.add = function (name, key, defaultValue) {
  91. return SettingsStore.getInstance().add(name, key, defaultValue);
  92. };
  93.  
  94. SettingsStore.init = function () {
  95. return SettingsStore.getInstance().init();
  96. };
  97. }
  98. }