2.0.0 • Published 7 years ago

pmap v2.0.0

Weekly downloads
2
License
MIT
Repository
github
Last release
7 years ago

Path Maps!

npm install pmap

A path map has the same API surface as an ES6 Map, except keys are arrays (or iterables) describing paths. Internally, a trie data structure is used to store entries. Here are some examples.

import PathMap from 'pmap';

const map = new PathMap();

map.set(['a','b','c'], 2);

// . (empty)
// └--a (empty)
//    └--b (empty)
//       └--c (2)

console.log(map.has(['a','b','c'])); // true
console.log(map.has(['a','b'])); // false
console.log(map.get(['a','b','c'])); // 2

map.set('ax', 3); // any iterable can be a path
                  // identical to map.set(['a', 'x'], 3)

// . (empty)
// └--a (empty)
//    |--b (empty)
//    |  └--c (2)
//    └--x (3)

map.set(['a'], 9);

// . (empty)
// └--a (9)
//    |--b (empty)
//    |  └--c (2)
//    └--x (3)

map.set([], null);

// . (null)
// └--a (9)
//    |--b (empty)
//    |  └--c (2)
//    └--x (3)

map.delete('abc');

// . (null)
// └--a (9)
//    └--x (3)

// there's also a find() method
// which ES6 `Map` doesn't have
map.clear();
map.set('my dog');
map.set('my dog has fleas');
map.set('my doug');
map.set('my doge');
map.set('my cat');
for (const [path] of map.find('my dog')) {
  console.log(path.join(''));
}

// 'my dog'
// 'my dog has fleas'
// 'my doge'

API documentation

See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

Caveats, change logs and notes:

  • Unlike ES6 maps, iteration order isn't guaranteed.
  • 1.x => 2.0 major version bump due to having removed es6 module syntax. No other changes.
2.0.0

7 years ago

1.1.4

8 years ago

1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago