implemented Observablemap

This commit is contained in:
2016-09-22 12:00:33 +02:00
parent 3b04f81b68
commit 2f681911ae
15 changed files with 181 additions and 9 deletions

View File

@ -4,3 +4,4 @@ import * as plugins from './lik.plugins'
export * from './lik.stringmap'
export * from './lik.objectmap'
export * from './lik.observablemap'

View File

@ -28,6 +28,15 @@ export class Objectmap<T> {
this.objectArray.push(objectArg)
}
/**
* like .add but adds an whole array of objects
*/
addArray(objectArrayArg: T[]) {
for (let item of objectArrayArg) {
this.add(item)
}
}
/**
* remove object from Objectmap
*/
@ -56,7 +65,7 @@ export class Objectmap<T> {
if (resultArray.length > 0) {
return resultArray[0]
} else {
return undefined
return null
}
}

35
ts/lik.observablemap.ts Normal file
View File

@ -0,0 +1,35 @@
import * as plugins from './lik.plugins'
import { Objectmap } from './lik.objectmap'
import { Stringmap } from './lik.stringmap'
import { Observable } from 'rxjs/Rx'
/**
* bundles an observable with an emitter
*/
export interface ObservableEmitterBundle {
observable: plugins.rx.Observable<any>
emitter: plugins.events.EventEmitter
event: string
}
export class Observablemap {
ObservableEmitterBundleObjectmap = new Objectmap<ObservableEmitterBundle>()
getObservableForEmitterEvent(emitterArg: plugins.events.EventEmitter, eventArg: string) {
let existingBundle = this.ObservableEmitterBundleObjectmap.find((bundleArg) => {
return(bundleArg.emitter === emitterArg && bundleArg.event === eventArg)
})
if (existingBundle) {
return existingBundle.observable
} else {
let emitterObservable = plugins.rx.Observable.fromEvent(emitterArg, eventArg)
this.ObservableEmitterBundleObjectmap.add({
observable: emitterObservable,
emitter: emitterArg,
event: eventArg
})
return emitterObservable
}
}
}

View File

@ -1,4 +1,6 @@
import 'typings-global'
export import q = require('q')
export import events = require('events')
export import lodash = require('lodash')
export import minimatch = require('minimatch')
export import rx = require('rxjs/Rx')