123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict';
- var has = require('has');
- var uniq = require('uniqs');
- function LayerCache (opts) {
- if (!(this instanceof LayerCache)) {
- return new LayerCache(opts);
- }
- this._values = [];
- this._startIndex = opts.startIndex || 1;
- }
- function ascending (a, b) {
- return a - b;
- }
- function reduceValues (list, value, index) {
- list[value] = index + this._startIndex;
- return list;
- }
- LayerCache.prototype._findValue = function (value) {
- if (has(this._values, value)) {
- return this._values[value];
- }
- return false;
- };
- LayerCache.prototype.optimizeValues = function () {
- this._values = uniq(this._values).sort(ascending).reduce(reduceValues.bind(this), {});
- };
- LayerCache.prototype.addValue = function (value) {
- var parsedValue = parseInt(value, 10);
- // pass only valid values
- if (!parsedValue || parsedValue < 0) {
- return;
- }
- this._values.push(parsedValue);
- };
- LayerCache.prototype.getValue = function (value) {
- var parsedValue = parseInt(value, 10);
- return this._findValue(parsedValue) || value;
- };
- module.exports = LayerCache;
|