UNPKG

@skele/core

Version:

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

1 lines 3.78 kB
'use strict';Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}var Trie=function(){function Trie(){_classCallCheck(this,Trie);this.root={$$T:false};this.isEmpty=true;}_createClass(Trie,[{key:"register",value:function register(key,obj){this.isEmpty=false;var current=this.root;if(!Array.isArray(key)){var n=current[key];if(n==null){n={$$T:false};current[key]=n;}n.$$T=true;n.$$V=obj;return;}for(var i=0,len=key.length;i<len;i++){var p=key[i];var _n=current[p];if(_n==null){_n={$$T:false};current[p]=_n;}current=_n;}current.$$T=true;current.$$V=obj;}},{key:"get",value:function get(key){var bestMatch=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var current=this.root;var best=current.$$T?current.$$V:undefined;if(!Array.isArray(key)){var n=current[key];if(n!=null&&n.$$T){return n.$$V;}else if(bestMatch){return best;}return undefined;}for(var i=0,len=key.length;i<len;i++){var p=key[i];current=current[p];if(current==null){return bestMatch?best:undefined;}if(current.$$T)best=current.$$V;}if(current==null||!current.$$T){return bestMatch?best:undefined;}else{return current.$$V;}}},{key:"getEntry",value:function getEntry(key){var bestMatch=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var current=this.root;var currentKey=[];var best=current.$$T?current.$$V:undefined;var bestKey=current.$$T?[]:undefined;if(!Array.isArray(key)){var n=current[key];if(n!=null&&n.$$T){return{key:[key],value:n.$$V};}else if(bestMatch&&best!=null){return{key:[],value:best};}return undefined;}for(var i=0,len=key.length;i<len;i++){var p=key[i];current=current[p];currentKey.push(p);if(current==null){return bestMatch&&best!=null?{key:bestKey,value:best}:undefined;}if(current.$$T){best=current.$$V;bestKey=currentKey.slice();}}if(current==null||!current.$$T){return bestMatch&&best!=null?{key:bestKey,value:best}:undefined;}else{return{key:currentKey,value:current.$$V};}}},{key:"collect",value:function collect(key){var current=this.root;var result=current.$$T?Array.isArray(current.$$V)?current.$$V:[current.$$V]:[];key=Array.isArray(key)?key:[key];for(var i=0,len=key.length;i<len;i++){var p=key[i];current=current[p];if(current==null)break;if(current.$$T){var v=current.$$V;if(Array.isArray(v)){Array.prototype.push.apply(result,v);}else{result.push(v);}}}return result;}},{key:"collector",value:regeneratorRuntime.mark(function collector(key){var current,currentKey,i,len,p;return regeneratorRuntime.wrap(function collector$(_context){while(1){switch(_context.prev=_context.next){case 0:current=this.root;currentKey=[];if(!current.$$T){_context.next=5;break;}_context.next=5;return{key:currentKey,value:current.$$V};case 5:key=Array.isArray(key)?key:[key];i=0,len=key.length;case 7:if(!(i<len)){_context.next=19;break;}p=key[i];current=current[p];currentKey.push(p);if(!(current==null)){_context.next=13;break;}return _context.abrupt("break",19);case 13:if(!current.$$T){_context.next=16;break;}_context.next=16;return{key:currentKey,value:current.$$V};case 16:i++;_context.next=7;break;case 19:case"end":return _context.stop();}}},collector,this);})}]);return Trie;}();exports.default=Trie;