add getOneAndRemove and findOneAndRemove

This commit is contained in:
2016-11-19 23:08:54 +01:00
parent 59173eebc4
commit afad357ed0
8 changed files with 119 additions and 44 deletions

View File

@ -37,19 +37,6 @@ export class Objectmap<T> {
}
}
/**
* remove object from Objectmap
*/
remove(objectArg: T) {
let replacmentArray = []
for (let item of this.objectArray) {
if (item !== objectArg) {
replacmentArray.push(item)
}
}
this.objectArray = replacmentArray
}
/**
* check if object is in Objectmap
*/
@ -77,10 +64,21 @@ export class Objectmap<T> {
}
/**
* wipe Objectmap
* gets an object in the Observablemap and removes it, so it can't be retrieved again
*/
wipe() {
this.objectArray = []
getOneAndRemove() {
return this.objectArray.shift()
}
/**
* finds a specific element and then removes it
*/
findOneAndRemove(findFunction) {
let foundElement = this.find(findFunction)
if (foundElement) {
this.remove(foundElement)
}
return foundElement
}
/**
@ -89,4 +87,24 @@ export class Objectmap<T> {
getArray() {
return plugins.lodash.cloneDeep(this.objectArray)
}
/**
* remove object from Objectmap
*/
remove(objectArg: T) {
let replacementArray = []
for (let item of this.objectArray) {
if (item !== objectArg) {
replacementArray.push(item)
}
}
this.objectArray = replacementArray
}
/**
* wipe Objectmap
*/
wipe() {
this.objectArray = []
}
}

View File

@ -13,9 +13,16 @@ export interface ObservableEmitterBundle {
event: string
}
/**
* manages observables by making sure that only one observable is regsitered per event
*/
export class Observablemap {
ObservableEmitterBundleObjectmap = new Objectmap<ObservableEmitterBundle>()
/**
* creates a new observable if not yet registered for the same event.
* In case event has been registered before the same observable is returned.
*/
getObservableForEmitterEvent(emitterArg: plugins.events.EventEmitter, eventArg: string) {
let existingBundle = this.ObservableEmitterBundleObjectmap.find((bundleArg) => {
return(bundleArg.emitter === emitterArg && bundleArg.event === eventArg)