{"_id":"unicode-trie","_rev":"2739679","name":"unicode-trie","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","dist-tags":{"latest":"2.0.0"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"time":{"modified":"2022-01-28T15:55:25.000Z","created":"2014-07-14T02:28:53.394Z","2.0.0":"2019-11-17T23:14:05.523Z","1.0.0":"2019-06-17T01:44:27.616Z","0.3.1":"2015-11-11T04:33:33.381Z","0.3.0":"2015-02-15T02:21:38.162Z","0.2.0":"2014-12-16T21:21:15.043Z","0.1.2":"2014-07-14T04:07:10.876Z","0.1.1":"2014-07-14T03:11:05.640Z","0.1.0":"2014-07-14T02:28:53.394Z"},"users":{"getify":true},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"versions":{"2.0.0":{"name":"unicode-trie","version":"2.0.0","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^6.1.4","nyc":"^14.1.1"},"scripts":{"test":"mocha","coverage":"nyc mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","dependencies":{"pako":"^0.2.5","tiny-inflate":"^1.0.0"},"gitHead":"916656f45abab135face2b53ee5e32488cc9b47f","_id":"unicode-trie@2.0.0","_nodeVersion":"12.10.0","_npmVersion":"6.10.3","dist":{"shasum":"8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8","size":12320,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-2.0.0.tgz"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/unicode-trie_2.0.0_1574032445335_0.19689724171467815"},"_hasShrinkwrap":false,"publish_time":1574032445523,"_cnpm_publish_time":1574032445523},"1.0.0":{"name":"unicode-trie","version":"1.0.0","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^6.1.4","nyc":"^14.1.1"},"scripts":{"test":"mocha","coverage":"nyc mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","dependencies":{"pako":"^0.2.5","tiny-inflate":"^1.0.0"},"gitHead":"cc87aecf5f5222fbc2f9cfa60904c29c91156826","_id":"unicode-trie@1.0.0","_nodeVersion":"12.0.0","_npmVersion":"6.9.0","dist":{"shasum":"f649afdca127135edb55ca0ad7c8c60656d92ad1","size":11857,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-1.0.0.tgz"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/unicode-trie_1.0.0_1560735867452_0.19049912551356862"},"_hasShrinkwrap":false,"publish_time":1560735867616,"_cnpm_publish_time":1560735867616},"0.3.1":{"name":"unicode-trie","version":"0.3.1","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","dependencies":{"pako":"^0.2.5","tiny-inflate":"^1.0.0"},"gitHead":"0e19655c9c291c133e577bcacd2c25b7c82455f7","_id":"unicode-trie@0.3.1","_shasum":"d671dddd89101a08bac37b6a5161010602052085","_from":".","_npmVersion":"2.14.7","_nodeVersion":"4.2.1","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"dist":{"shasum":"d671dddd89101a08bac37b6a5161010602052085","size":15126,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.3.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.3.1.tgz"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"directories":{},"publish_time":1447216413381,"_cnpm_publish_time":1447216413381,"_hasShrinkwrap":false},"0.3.0":{"name":"unicode-trie","version":"0.3.0","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","dependencies":{"pako":"^0.2.5","tiny-inflate":"^1.0.0"},"gitHead":"3bd0aa2f8df5da6a08622f64f010c80924acb085","_id":"unicode-trie@0.3.0","_shasum":"d3dc02852c9c63990094fcbcd0e9126a79088414","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"dist":{"shasum":"d3dc02852c9c63990094fcbcd0e9126a79088414","size":15491,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.3.0.tgz"},"directories":{},"publish_time":1423966898162,"_cnpm_publish_time":1423966898162,"_hasShrinkwrap":false},"0.2.0":{"name":"unicode-trie","version":"0.2.0","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","dependencies":{"pako":"^0.2.5"},"gitHead":"f92933d4dfd79e595ed44acd290d907f271bb296","_id":"unicode-trie@0.2.0","_shasum":"201499baff6bb7a3774005e3cef0680b254db127","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"dist":{"shasum":"201499baff6bb7a3774005e3cef0680b254db127","size":62970,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.2.0.tgz"},"directories":{},"publish_time":1418764875043,"_cnpm_publish_time":1418764875043,"_hasShrinkwrap":false},"0.1.2":{"name":"unicode-trie","version":"0.1.2","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","gitHead":"19ef7d1d266ebd8201f1a58b1512927b2298b2bd","_id":"unicode-trie@0.1.2","_shasum":"bd3c528bc3360cafdf71f0863cbec29fc0e84ec8","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"dist":{"shasum":"bd3c528bc3360cafdf71f0863cbec29fc0e84ec8","size":14771,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.1.2.tgz"},"directories":{},"publish_time":1405310830876,"_cnpm_publish_time":1405310830876,"_hasShrinkwrap":false},"0.1.1":{"name":"unicode-trie","version":"0.1.1","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","gitHead":"bf8ee37fbcdf1bcc4829f442f54fc17353af5498","_id":"unicode-trie@0.1.1","_shasum":"d3178d37b794aa83a09b82d562269e92d0bab929","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"dist":{"shasum":"d3178d37b794aa83a09b82d562269e92d0bab929","size":14682,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.1.1.tgz"},"directories":{},"publish_time":1405307465640,"_cnpm_publish_time":1405307465640,"_hasShrinkwrap":false},"0.1.0":{"name":"unicode-trie","version":"0.1.0","description":"Unicode Trie data structure for fast character metadata lookup, ported from ICU","devDependencies":{"mocha":"^1.20.1","coffee-script":"^1.7.1","coffee-coverage":"^0.4.2"},"scripts":{"prepublish":"make build","postpublish":"make clean","test":"mocha"},"repository":{"type":"git","url":"git://github.com/devongovett/unicode-trie.git"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"homepage":"https://github.com/devongovett/unicode-trie","gitHead":"3a7f1f35099d8e289a7e81855facb4dd4d503cdf","_id":"unicode-trie@0.1.0","_shasum":"c78d5536c43f6ff023680fdd136bd1ce150b28f0","_from":".","_npmVersion":"1.4.15","_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"dist":{"shasum":"c78d5536c43f6ff023680fdd136bd1ce150b28f0","size":14438,"noattachment":false,"key":"/unicode-trie/-/unicode-trie-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/unicode-trie/download/unicode-trie-0.1.0.tgz"},"directories":{},"publish_time":1405304933394,"_cnpm_publish_time":1405304933394,"_hasShrinkwrap":false}},"readme":"# unicode-trie\nA data structure for fast Unicode character metadata lookup, ported from ICU\n\n## Background\n\nWhen implementing many Unicode algorithms such as text segmentation,\nnormalization, bidi processing, etc., fast access to character metadata\nis crucial to good performance.  There over a million code points in the\nUnicode standard, many of which produce the same result when looked up,\nso an array or hash table is not appropriate - those data structures are\nfast but would require a lot of memory.  The data is generally\ngrouped in ranges, so you could do a binary search, but that is not\nfast enough for some applications.\n\nThe [International Components for Unicode](http://site.icu-project.org) (ICU) project\ncame up with a data structure based on a [Trie](http://en.wikipedia.org/wiki/Trie) that provides fast access\nto Unicode metadata.  The range data is precompiled to a serialized\nand flattened trie, which is then used at runtime to lookup the necessary\ndata.  According to my own tests, this is generally at least 50% faster\nthan binary search, with not too much additional memory required.\n\n## Installation\n\n    npm install unicode-trie\n\n## Building a Trie\n\nUnicode Tries are generally precompiled from data in the Unicode database\nfor faster runtime performance.  To build a Unicode Trie, use the\n`UnicodeTrieBuilder` class.\n\n```js\nconst UnicodeTrieBuilder = require('unicode-trie/builder');\nconst fs = require('fs');\n\n// create a trie\nlet t = new UnicodeTrieBuilder();\n\n// optional parameters for default value, and error value\n// if not provided, both are set to 0\nt = new UnicodeTrieBuilder(10, 999);\n\n// set individual values and ranges\nt.set(0x4567, 99);\nt.setRange(0x40, 0xe7, 0x1234);\n\n// you can lookup a value if you like\nt.get(0x4567); // => 99\n\n// get a compiled trie (returns a UnicodeTrie object)\nconst trie = t.freeze();\n\n// write compressed trie to a binary file\nfs.writeFileSync('data.trie', t.toBuffer());\n```\n\n## Using a precompiled Trie\n\nOnce you've built a precompiled trie, you can load it into the\n`UnicodeTrie` class, which is a readonly representation of the\ntrie.  From there, you can lookup values.\n\n```js\nconst UnicodeTrie = require('unicode-trie');\nconst fs = require('fs');\n\n// load serialized trie from binary file\nconst data = fs.readFileSync('data.trie');\nconst trie = new UnicodeTrie(data);\n\n// lookup a value\ntrie.get(0x4567); // => 99\n```\n\n## License\n\nMIT\n","_attachments":{},"homepage":"https://github.com/devongovett/unicode-trie","bugs":{"url":"https://github.com/devongovett/unicode-trie/issues"},"license":"MIT"}