Code coverage report for src/lib/d3-color/map.js

Statements: 46.3% (25 / 54)      Branches: 42.86% (6 / 14)      Functions: 46.67% (7 / 15)      Lines: 53.49% (23 / 43)      Ignored: none     

All files » src/lib/d3-color/ » map.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87    1   1 1 1   1             148   1     1 1     1     1     76     296                                 148       1 372     1 148     1       1       1           1           1        
'use strict';
/* jshint ignore:start */
var d3_class = require('./class');
 
module.exports = function(object, f) {
  var map = new d3_Map;
  Iif (object instanceof d3_Map) {
    object.forEach(function(key, value) { map.set(key, value); });
  } else Iif (Array.isArray(object)) {
    var i = -1,
        n = object.length,
        o;
    if (arguments.length === 1) while (++i < n) map.set(i, object[i]);
    else while (++i < n) map.set(f.call(object, o = object[i], i), o);
  } else {
    for (var key in object) map.set(key, object[key]);
  }
  return map;
};
 
function d3_Map() {
  this._ = Object.create(null);
}
 
var d3_map_proto = "__proto__",
    d3_map_zero = "\0";
 
d3_class(d3_Map, {
  has: d3_map_has,
  get: function(key) {
    return this._[d3_map_escape(key)];
  },
  set: function(key, value) {
    return this._[d3_map_escape(key)] = value;
  },
  remove: d3_map_remove,
  keys: d3_map_keys,
  values: function() {
    var values = [];
    for (var key in this._) values.push(this._[key]);
    return values;
  },
  entries: function() {
    var entries = [];
    for (var key in this._) entries.push({key: d3_map_unescape(key), value: this._[key]});
    return entries;
  },
  size: d3_map_size,
  empty: d3_map_empty,
  forEach: function(f) {
    for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]);
  }
});
 
function d3_map_escape(key) {
  return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key;
}
 
function d3_map_unescape(key) {
  return (key += "")[0] === d3_map_zero ? key.slice(1) : key;
}
 
function d3_map_has(key) {
  return d3_map_escape(key) in this._;
}
 
function d3_map_remove(key) {
  return (key = d3_map_escape(key)) in this._ && delete this._[key];
}
 
function d3_map_keys() {
  var keys = [];
  for (var key in this._) keys.push(d3_map_unescape(key));
  return keys;
}
 
function d3_map_size() {
  var size = 0;
  for (var key in this._) ++size;
  return size;
}
 
function d3_map_empty() {
  for (var key in this._) return false;
  return true;
}
/* jshint ignore:end */