123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import OrderedList from 'misago/utils/ordered-list';
- export class Misago {
- constructor() {
- this._initializers = [];
- this._context = {};
- }
- addInitializer(initializer) {
- this._initializers.push({
- key: initializer.name,
- item: initializer.initializer,
- after: initializer.after,
- before: initializer.before
- });
- }
- init(context) {
- this._context = context;
- var initOrder = new OrderedList(this._initializers).orderedValues();
- initOrder.forEach(initializer => {
- initializer(this);
- });
- }
- // context accessors
- has(key) {
- return !!this._context[key];
- }
- get(key, fallback) {
- if (this.has(key)) {
- return this._context[key];
- } else {
- return fallback || undefined;
- }
- }
- pop(key) {
- if (this.has(key)) {
- let value = this._context[key];
- this._context[key] = null;
- return value;
- } else {
- return undefined;
- }
- }
- }
- // create singleton
- var misago = new Misago();
- // expose it globally
- global.misago = misago;
- // and export it for tests and stuff
- export default misago;
|