|
259 | 259 | empty: d3_map_empty, |
260 | 260 | forEach: d3_map_forEach |
261 | 261 | }; |
262 | | - if (d3_map_proto in Object.create(null)) { |
263 | | - d3_map_prototype.get = function(key) { |
264 | | - return this._[d3_map_escape(key)]; |
265 | | - }; |
266 | | - d3_map_prototype.set = function(key, value) { |
267 | | - return this._[d3_map_escape(key)] = value; |
268 | | - }; |
269 | | - d3_map_prototype.has = function(key) { |
270 | | - return d3_map_escape(key) in this._; |
271 | | - }; |
272 | | - d3_map_prototype.remove = function(key) { |
273 | | - return (key = d3_map_escape(key)) in this._ && delete this._[key]; |
274 | | - }; |
275 | | - d3_map_prototype.keys = function() { |
276 | | - var keys = []; |
277 | | - for (var key in this._) { |
278 | | - keys.push(d3_map_unescape(key)); |
279 | | - } |
280 | | - return keys; |
281 | | - }; |
282 | | - d3_map_prototype.entries = function() { |
283 | | - var entries = []; |
284 | | - for (var key in this._) { |
285 | | - entries.push({ |
286 | | - key: d3_map_unescape(key), |
287 | | - value: this._[key] |
288 | | - }); |
289 | | - } |
290 | | - return entries; |
291 | | - }; |
292 | | - d3_map_prototype.forEach = function(f) { |
293 | | - for (var key in this._) { |
294 | | - f.call(this, d3_map_unescape(key), this._[key]); |
295 | | - } |
296 | | - }; |
297 | | - } |
298 | 262 | d3_class(d3_Map, d3_map_prototype); |
299 | 263 | function d3_map_escape(key) { |
300 | 264 | return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key; |
|
303 | 267 | return (key += "")[0] === d3_map_zero ? key.slice(1) : key; |
304 | 268 | } |
305 | 269 | function d3_map_get(key) { |
306 | | - return this._[key]; |
| 270 | + return this._[d3_map_escape(key)]; |
307 | 271 | } |
308 | 272 | function d3_map_set(key, value) { |
309 | | - return this._[key] = value; |
| 273 | + return this._[d3_map_escape(key)] = value; |
310 | 274 | } |
311 | 275 | function d3_map_has(key) { |
312 | | - return key in this._; |
| 276 | + return d3_map_escape(key) in this._; |
313 | 277 | } |
314 | 278 | function d3_map_remove(key) { |
315 | | - return key in this._ && delete this._[key]; |
| 279 | + return (key = d3_map_escape(key)) in this._ && delete this._[key]; |
316 | 280 | } |
317 | 281 | function d3_map_keys() { |
318 | 282 | var keys = []; |
319 | 283 | for (var key in this._) { |
320 | | - keys.push(key); |
| 284 | + keys.push(d3_map_unescape(key)); |
321 | 285 | } |
322 | 286 | return keys; |
323 | 287 | } |
324 | 288 | function d3_map_values() { |
325 | | - var values = []; |
| 289 | + var entries = []; |
326 | 290 | for (var key in this._) { |
327 | | - values.push(this._[key]); |
| 291 | + entries.push({ |
| 292 | + key: d3_map_unescape(key), |
| 293 | + value: this._[key] |
| 294 | + }); |
328 | 295 | } |
329 | | - return values; |
| 296 | + return entries; |
330 | 297 | } |
331 | 298 | function d3_map_entries() { |
332 | 299 | var entries = []; |
|
353 | 320 | } |
354 | 321 | function d3_map_forEach(f) { |
355 | 322 | for (var key in this._) { |
356 | | - f.call(this, key, this._[key]); |
| 323 | + f.call(this, d3_map_unescape(key), this._[key]); |
357 | 324 | } |
358 | 325 | } |
359 | 326 | d3.nest = function() { |
|
428 | 395 | this._ = Object.create(null); |
429 | 396 | } |
430 | 397 | var d3_set_prototype = { |
431 | | - has: d3_map_prototype.has, |
| 398 | + has: d3_map_has, |
432 | 399 | add: d3_set_add, |
433 | | - remove: d3_map_prototype.remove, |
434 | | - values: d3_map_prototype.keys, |
| 400 | + remove: d3_map_remove, |
| 401 | + values: d3_map_keys, |
435 | 402 | size: d3_map_size, |
436 | 403 | empty: d3_map_empty, |
437 | 404 | forEach: d3_set_forEach |
438 | 405 | }; |
439 | | - if (d3_map_proto in Object.create(null)) { |
440 | | - d3_set_prototype.add = function(key) { |
441 | | - this._[d3_map_escape(key)] = true; |
442 | | - return key; |
443 | | - }; |
444 | | - d3_set_prototype.forEach = function(f) { |
445 | | - for (var key in this._) { |
446 | | - f.call(this, d3_map_unescape(key)); |
447 | | - } |
448 | | - }; |
449 | | - } |
450 | 406 | d3_class(d3_Set, d3_set_prototype); |
451 | 407 | function d3_set_add(key) { |
452 | | - this._[key] = true; |
| 408 | + this._[d3_map_escape(key)] = true; |
453 | 409 | return key; |
454 | 410 | } |
455 | 411 | function d3_set_forEach(f) { |
456 | 412 | for (var key in this._) { |
457 | | - f.call(this, key); |
| 413 | + f.call(this, d3_map_unescape(key)); |
458 | 414 | } |
459 | 415 | } |
460 | 416 | d3.behavior = {}; |
|
0 commit comments