UNPKG

@skele/core

Version:

Core package of the Skele framework. Element definitions, registrations and traversal.

1 lines 1.49 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=PatternRegistry;var _immutable=require("immutable");var R=_interopRequireWildcard(require("ramda"));function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj;}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){var desc=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):{};if(desc.get||desc.set){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}}newObj.default=obj;return newObj;}}function PatternRegistry(){this._registry=new _immutable.List();this.register=function(key,value){var pattern;if(typeof key==='function'){pattern=_immutable.List.of(key,value);}else if(key instanceof RegExp){var regexp=key;pattern=_immutable.List.of(regexp.test.bind(regexp),value);}else{pattern=_immutable.List.of(equals(key),value);}this._registry=this._registry.push(pattern);};this.isEmpty=function(){return this._registry.count()===0;};this.reset=function(){this._registry=new _immutable.List();};this.get=function(key){var result=this._registry.find(function(r){return r.get(0)(key);});if(result){return result.get(1);}};this.getEntry=function(key){var res=this.get(key);if(res!=null){return{key:[key],value:res};}return undefined;};}var equals=R.curryN(2,R.ifElse(function(a,b){return _immutable.Iterable.isIterable(a)&&_immutable.Iterable.isIterable(b);},_immutable.is,R.equals));