rubellite
Version:
Rubellite is a dictionary data structure built for JavaScript
2 lines (1 loc) • 1.33 kB
JavaScript
module.exports=function(e){function r(e){return"[object Function]"===Object.prototype.toString.call(e)}function o(e){return e===Object(e)}function c(e){return n=e,"[object String]"===Object.prototype.toString.call(n)&&Boolean(e);var n}function i(e,n,t){var o=!Boolean(t);if(Boolean(Object.assign)&&r(Object.assign)&&o)Object.assign(e,n);else for(key in n)!n.hasOwnProperty(key)||!o&&key in e||(e[key]=n[key])}function t(e,n,t){if(!c(e))throw Error("ERR_RUBELLITE_001: Invalid key");if(e in a&&!t)throw Error("ERR_RUBELLITE_002: Key already exists");e in a||l++,a[e]=n}function n(e){var n,t;a=Boolean(e)&&o(e)?(n=e,t=Object.create(null),i(t,n),t):Object.create(null),l=Object.keys(a).length}var u=this,a=Object.create(null),l=0;n(e),u.count=function(){return l},u.add=function(e,n){t(e,n)},u.replace=function(e,n){t(e,n,!0)},u.feed=function(e,n){Boolean(e)&&o(e)&&(i(a,e,n),l=Object.keys(a).length)},u.containsKey=function(e){return!!c(e)&&e in a},u.seek=function(e){if(c(e))return a[e]},u.remove=function(e){c(e)&&e in a&&(delete a[e],l--)},u.getKeys=function(){return Object.keys(a)},u.getValues=function(){return n=a,Boolean(Object.values)&&r(Object.values)?Object.values(n):Object.keys(n).map(function(e){return n[e]});var n},u.getJson=function(){return JSON.stringify(a)},u.clear=function(){n()},u.recycle=function(e){n(e)}};