implemented Observablemap
This commit is contained in:
@ -4,3 +4,4 @@ import * as plugins from './lik.plugins'
|
||||
|
||||
export * from './lik.stringmap'
|
||||
export * from './lik.objectmap'
|
||||
export * from './lik.observablemap'
|
||||
|
@ -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
35
ts/lik.observablemap.ts
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
@ -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')
|
||||
|
Reference in New Issue
Block a user