implemented Observablemap
This commit is contained in:
parent
3b04f81b68
commit
2f681911ae
1
dist/index.d.ts
vendored
1
dist/index.d.ts
vendored
@ -1,2 +1,3 @@
|
|||||||
export * from './lik.stringmap';
|
export * from './lik.stringmap';
|
||||||
export * from './lik.objectmap';
|
export * from './lik.objectmap';
|
||||||
|
export * from './lik.observablemap';
|
||||||
|
3
dist/index.js
vendored
3
dist/index.js
vendored
@ -5,4 +5,5 @@ function __export(m) {
|
|||||||
// import modules
|
// import modules
|
||||||
__export(require("./lik.stringmap"));
|
__export(require("./lik.stringmap"));
|
||||||
__export(require("./lik.objectmap"));
|
__export(require("./lik.objectmap"));
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWlCO0FBRWpCLHFDQUErQjtBQUMvQixxQ0FBK0IifQ==
|
__export(require("./lik.observablemap"));
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWlCO0FBRWpCLHFDQUErQjtBQUMvQixxQ0FBK0I7QUFDL0IseUNBQW1DIn0=
|
4
dist/lik.objectmap.d.ts
vendored
4
dist/lik.objectmap.d.ts
vendored
@ -17,6 +17,10 @@ export declare class Objectmap<T> {
|
|||||||
* add object to Objectmap
|
* add object to Objectmap
|
||||||
*/
|
*/
|
||||||
add(objectArg: T): void;
|
add(objectArg: T): void;
|
||||||
|
/**
|
||||||
|
* like .add but adds an whole array of objects
|
||||||
|
*/
|
||||||
|
addArray(objectArrayArg: T[]): void;
|
||||||
/**
|
/**
|
||||||
* remove object from Objectmap
|
* remove object from Objectmap
|
||||||
*/
|
*/
|
||||||
|
12
dist/lik.objectmap.js
vendored
12
dist/lik.objectmap.js
vendored
@ -15,6 +15,14 @@ class Objectmap {
|
|||||||
add(objectArg) {
|
add(objectArg) {
|
||||||
this.objectArray.push(objectArg);
|
this.objectArray.push(objectArg);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* like .add but adds an whole array of objects
|
||||||
|
*/
|
||||||
|
addArray(objectArrayArg) {
|
||||||
|
for (let item of objectArrayArg) {
|
||||||
|
this.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* remove object from Objectmap
|
* remove object from Objectmap
|
||||||
*/
|
*/
|
||||||
@ -42,7 +50,7 @@ class Objectmap {
|
|||||||
return resultArray[0];
|
return resultArray[0];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return undefined;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@ -59,4 +67,4 @@ class Objectmap {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
exports.Objectmap = Objectmap;
|
exports.Objectmap = Objectmap;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9iamVjdG1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5vYmplY3RtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQVVBOztHQUVHO0FBQ0g7SUFHSTs7T0FFRztJQUNIO1FBTFEsZ0JBQVcsR0FBUSxFQUFFLENBQUE7SUFPN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQVk7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsU0FBWTtRQUNmLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDckIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5QixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFZO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsWUFBdUM7UUFDeEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdkQsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLFNBQVMsQ0FBQTtRQUNwQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFDLFdBQXlDO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDekIsQ0FBQztDQUNKO0FBOURELDhCQThEQyJ9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9iamVjdG1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2xpay5vYmplY3RtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQVVBOztHQUVHO0FBQ0g7SUFHSTs7T0FFRztJQUNIO1FBTFEsZ0JBQVcsR0FBUSxFQUFFLENBQUE7SUFPN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLFNBQVk7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsY0FBbUI7UUFDeEIsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xCLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsU0FBWTtRQUNmLElBQUksZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUN4QixHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDckIsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM5QixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsZUFBZSxDQUFBO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWMsQ0FBQyxTQUFZO1FBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLENBQUMsWUFBdUM7UUFDeEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDdkQsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekIsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsV0FBeUM7UUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQUk7UUFDQSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUN6QixDQUFDO0NBQ0o7QUF2RUQsOEJBdUVDIn0=
|
16
dist/lik.observablemap.d.ts
vendored
Normal file
16
dist/lik.observablemap.d.ts
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/// <reference types="node" />
|
||||||
|
import * as plugins from './lik.plugins';
|
||||||
|
import { Objectmap } from './lik.objectmap';
|
||||||
|
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 declare class Observablemap {
|
||||||
|
ObservableEmitterBundleObjectmap: Objectmap<ObservableEmitterBundle>;
|
||||||
|
getObservableForEmitterEvent(emitterArg: plugins.events.EventEmitter, eventArg: string): Observable<any>;
|
||||||
|
}
|
27
dist/lik.observablemap.js
vendored
Normal file
27
dist/lik.observablemap.js
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
"use strict";
|
||||||
|
const plugins = require("./lik.plugins");
|
||||||
|
const lik_objectmap_1 = require("./lik.objectmap");
|
||||||
|
class Observablemap {
|
||||||
|
constructor() {
|
||||||
|
this.ObservableEmitterBundleObjectmap = new lik_objectmap_1.Objectmap();
|
||||||
|
}
|
||||||
|
getObservableForEmitterEvent(emitterArg, eventArg) {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.Observablemap = Observablemap;
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLm9ic2VydmFibGVtYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsub2JzZXJ2YWJsZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUNBQXdDO0FBQ3hDLG1EQUEyQztBQWMzQztJQUFBO1FBQ0kscUNBQWdDLEdBQUcsSUFBSSx5QkFBUyxFQUEyQixDQUFBO0lBa0IvRSxDQUFDO0lBaEJHLDRCQUE0QixDQUFDLFVBQXVDLEVBQUUsUUFBZ0I7UUFDbEYsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVM7WUFDdEUsTUFBTSxDQUFBLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtRQUM1RSxDQUFDLENBQUMsQ0FBQTtRQUNGLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7UUFDcEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osSUFBSSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzdFLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUM7Z0JBQ3RDLFVBQVUsRUFBRSxpQkFBaUI7Z0JBQzdCLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixLQUFLLEVBQUUsUUFBUTthQUNsQixDQUFDLENBQUE7WUFDRixNQUFNLENBQUMsaUJBQWlCLENBQUE7UUFDNUIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQW5CRCxzQ0FtQkMifQ==
|
2
dist/lik.plugins.d.ts
vendored
2
dist/lik.plugins.d.ts
vendored
@ -1,4 +1,6 @@
|
|||||||
import 'typings-global';
|
import 'typings-global';
|
||||||
export import q = require('q');
|
export import q = require('q');
|
||||||
|
export import events = require('events');
|
||||||
export import lodash = require('lodash');
|
export import lodash = require('lodash');
|
||||||
export import minimatch = require('minimatch');
|
export import minimatch = require('minimatch');
|
||||||
|
export import rx = require('rxjs/Rx');
|
||||||
|
4
dist/lik.plugins.js
vendored
4
dist/lik.plugins.js
vendored
@ -1,6 +1,8 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
exports.q = require("q");
|
exports.q = require("q");
|
||||||
|
exports.events = require("events");
|
||||||
exports.lodash = require("lodash");
|
exports.lodash = require("lodash");
|
||||||
exports.minimatch = require("minimatch");
|
exports.minimatch = require("minimatch");
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLHlCQUE4QjtBQUM5QixtQ0FBd0M7QUFDeEMseUNBQThDIn0=
|
exports.rx = require("rxjs/Rx");
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlrLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9saWsucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLHlCQUE4QjtBQUM5QixtQ0FBd0M7QUFDeEMsbUNBQXdDO0FBQ3hDLHlDQUE4QztBQUM5QyxnQ0FBcUMifQ==
|
@ -29,6 +29,7 @@
|
|||||||
"@types/q": "0.x.x",
|
"@types/q": "0.x.x",
|
||||||
"lodash": "^4.16.1",
|
"lodash": "^4.16.1",
|
||||||
"minimatch": "^3.0.3",
|
"minimatch": "^3.0.3",
|
||||||
"q": "^1.4.1"
|
"q": "^1.4.1",
|
||||||
|
"rxjs": "^5.0.0-beta.12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
35
test/test.js
35
test/test.js
File diff suppressed because one or more lines are too long
34
test/test.ts
34
test/test.ts
@ -1,13 +1,18 @@
|
|||||||
import 'typings-test'
|
import 'typings-test'
|
||||||
import lik = require('../dist/index')
|
import * as events from 'events'
|
||||||
|
import * as rx from 'rxjs/Rx'
|
||||||
import * as should from 'should'
|
import * as should from 'should'
|
||||||
|
|
||||||
|
import lik = require('../dist/index')
|
||||||
describe('lik',function(){
|
describe('lik',function(){
|
||||||
describe('Stringmap',function(){
|
describe('Stringmap',function(){
|
||||||
let testStringmap: lik.Stringmap
|
let testStringmap: lik.Stringmap
|
||||||
let testString1 = 'testString1'
|
let testString1 = 'testString1'
|
||||||
let testString2 = 'testString2'
|
let testString2 = 'testString2'
|
||||||
let testString3 = 'testString3'
|
let testString3 = 'testString3'
|
||||||
|
let testString4 = 'testString4'
|
||||||
|
let testString5 = 'testString5'
|
||||||
|
let testString6 = 'testString6'
|
||||||
it('should create an instance of Stringmap',function(){
|
it('should create an instance of Stringmap',function(){
|
||||||
testStringmap = new lik.Stringmap()
|
testStringmap = new lik.Stringmap()
|
||||||
should(testStringmap).be.instanceof(lik.Stringmap)
|
should(testStringmap).be.instanceof(lik.Stringmap)
|
||||||
@ -26,6 +31,10 @@ describe('lik',function(){
|
|||||||
should(testStringmap.checkMinimatch('*String2')).be.true()
|
should(testStringmap.checkMinimatch('*String2')).be.true()
|
||||||
should(testStringmap.checkMinimatch('*String4')).be.false()
|
should(testStringmap.checkMinimatch('*String4')).be.false()
|
||||||
})
|
})
|
||||||
|
it('should add an array of strings',function(){
|
||||||
|
testStringmap.addStringArray([testString4,testString5,testString6])
|
||||||
|
should(testStringmap.checkMinimatch('*String4')).be.true()
|
||||||
|
})
|
||||||
it('should remove a string from Stringmap',function(){
|
it('should remove a string from Stringmap',function(){
|
||||||
testStringmap.removeString(testString2)
|
testStringmap.removeString(testString2)
|
||||||
should(testStringmap.checkString(testString2)).be.false()
|
should(testStringmap.checkString(testString2)).be.false()
|
||||||
@ -86,4 +95,27 @@ describe('lik',function(){
|
|||||||
should(myObject === referenceObject).be.true()
|
should(myObject === referenceObject).be.true()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
describe('Observablemap',function(){
|
||||||
|
let testObservablemap: lik.Observablemap
|
||||||
|
let testObservable1: rx.Observable<any>
|
||||||
|
let testObservable2: rx.Observable<any>
|
||||||
|
let testObservable3: rx.Observable<any>
|
||||||
|
let testEmitter: events.EventEmitter
|
||||||
|
it('should create an instance',function(){
|
||||||
|
testObservablemap = new lik.Observablemap()
|
||||||
|
should(testObservablemap).be.instanceof(lik.Observablemap)
|
||||||
|
})
|
||||||
|
it('should accept a new emitter',function(done) {
|
||||||
|
testEmitter = new events.EventEmitter()
|
||||||
|
testObservable1 = testObservablemap.getObservableForEmitterEvent(testEmitter,'event1')
|
||||||
|
testObservable1.subscribe(x => {
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
testObservable2 = testObservablemap.getObservableForEmitterEvent(testEmitter,'event1')
|
||||||
|
testObservable3 = testObservablemap.getObservableForEmitterEvent(testEmitter, 'event2')
|
||||||
|
should(testObservable1 === testObservable2).be.true()
|
||||||
|
should(testObservable1 === testObservable3).be.false()
|
||||||
|
testEmitter.emit('event1')
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -4,3 +4,4 @@ import * as plugins from './lik.plugins'
|
|||||||
|
|
||||||
export * from './lik.stringmap'
|
export * from './lik.stringmap'
|
||||||
export * from './lik.objectmap'
|
export * from './lik.objectmap'
|
||||||
|
export * from './lik.observablemap'
|
||||||
|
@ -28,6 +28,15 @@ export class Objectmap<T> {
|
|||||||
this.objectArray.push(objectArg)
|
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
|
* remove object from Objectmap
|
||||||
*/
|
*/
|
||||||
@ -56,7 +65,7 @@ export class Objectmap<T> {
|
|||||||
if (resultArray.length > 0) {
|
if (resultArray.length > 0) {
|
||||||
return resultArray[0]
|
return resultArray[0]
|
||||||
} else {
|
} 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'
|
import 'typings-global'
|
||||||
export import q = require('q')
|
export import q = require('q')
|
||||||
|
export import events = require('events')
|
||||||
export import lodash = require('lodash')
|
export import lodash = require('lodash')
|
||||||
export import minimatch = require('minimatch')
|
export import minimatch = require('minimatch')
|
||||||
|
export import rx = require('rxjs/Rx')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user