{"_id":"grapheme-breaker","_rev":"18-818ba5fef87493fca583bfb18e6c7678","name":"grapheme-breaker","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.1":{"name":"grapheme-breaker","version":"0.1.1","keywords":["unicode","text","break","segment","character","grapheme cluster"],"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","_id":"grapheme-breaker@0.1.1","maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"homepage":"https://github.com/devongovett/grapheme-breaker","bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"dist":{"shasum":"dd2f2f76f633910ef9611c6b3a7b20468c6fa541","tarball":"https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.1.1.tgz","integrity":"sha512-EQ7DPPPCK6Lq8lhjEcWxrwYLeLMtNG81MTNSYZJf7aBVSBXaenNr9owOLjBXlv4SbSXmvMKOZe9UiJPKxkMx5g==","signatures":[{"sig":"MEYCIQCIekdKbkR/Tu+Nbkjdh3s1UWxrutblyW778vemSZ/pGwIhAKc/Apyo247gi4V0EyiZ8cS9FHSGQKpLSvpZri3oAUqd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/GraphemeBreaker","_from":".","_shasum":"dd2f2f76f633910ef9611c6b3a7b20468c6fa541","gitHead":"9ea1607457d8905ceb944656092a581d1bee3fbd","scripts":{"test":"mocha","prepublish":"coffee -c src/","postpublish":"rm -rf src/*.js"},"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"repository":{"url":"git://github.com/devongovett/grapheme-breaker","type":"git"},"_npmVersion":"1.4.15","description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","directories":{"test":"test"},"dependencies":{},"devDependencies":{"chai":"^1.9.1","mocha":"^1.20.1","request":"^2.37.0","coffee-script":"^1.7.1"}},"0.1.2":{"name":"grapheme-breaker","version":"0.1.2","keywords":["unicode","text","break","segment","character","grapheme cluster"],"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","_id":"grapheme-breaker@0.1.2","maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"homepage":"https://github.com/devongovett/grapheme-breaker","bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"dist":{"shasum":"31d45e5bed3fa87fa9e1f5a0d990d0ee190548c3","tarball":"https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.1.2.tgz","integrity":"sha512-2jF11JG1/EJG71Pf13XCmCMNJcUQfn2dWsaG3y0L58Hp3BDkai+JoS8/Wr/hMdfxwhNyGBRXc+evp5T+CmMDDQ==","signatures":[{"sig":"MEYCIQC3Li9pAENt4Hggtm+YUKBiBm5GRZdi+f+HtdheYC4jJwIhAKZzeJTYb4/FzkcwOjHedCBgrStlqJeuQfn8iEE4qH3D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/GraphemeBreaker","_from":".","_shasum":"31d45e5bed3fa87fa9e1f5a0d990d0ee190548c3","gitHead":"737f161d7cb76a6efaa89afd814aa1d336141e74","scripts":{"test":"mocha","prepublish":"coffee -c src/","postpublish":"rm -rf src/*.js"},"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"repository":{"url":"git://github.com/devongovett/grapheme-breaker","type":"git"},"_npmVersion":"1.4.15","description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","directories":{"test":"test"},"dependencies":{"unicode-trie":"^0.1.2"},"devDependencies":{"chai":"^1.9.1","mocha":"^1.20.1","request":"^2.37.0","coffee-script":"^1.7.1"}},"0.2.0":{"name":"grapheme-breaker","version":"0.2.0","keywords":["unicode","text","break","segment","character","grapheme cluster"],"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","_id":"grapheme-breaker@0.2.0","maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"homepage":"https://github.com/devongovett/grapheme-breaker","bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"dist":{"shasum":"538a20e2f1887d9a1ae671f70bfa08ed3d55dff2","tarball":"https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.2.0.tgz","integrity":"sha512-XY6MZE6NCHrZX6zAt+0KVJLjpEYbjskeSVlQ1hs4JleUQ4oNbF9IUIcPmWmjNcSARd36yYnixEsZp8C8V4SMTg==","signatures":[{"sig":"MEYCIQCaTzNcGba/3qs632pBeHy805BqCp4YAE3+r4JUXh9deQIhAKi3TAl4F00i+RX0A29Ww8JHMhQtAUaYCqAkVoUVuCVV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/GraphemeBreaker","_from":".","_shasum":"538a20e2f1887d9a1ae671f70bfa08ed3d55dff2","gitHead":"fcaf44012e9c246b82af48aae1f95150f8700e34","scripts":{"test":"mocha","prepublish":"coffee -c src/","postpublish":"rm -rf src/*.js"},"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"browserify":{"transform":["brfs"]},"repository":{"url":"git://github.com/devongovett/grapheme-breaker","type":"git"},"_npmVersion":"1.4.28","description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","directories":{"test":"test"},"dependencies":{"brfs":"^1.2.0","unicode-trie":"^0.2.0"},"devDependencies":{"chai":"^1.9.1","mocha":"^1.20.1","request":"^2.37.0","coffee-script":"^1.7.1"}},"0.3.1":{"name":"grapheme-breaker","version":"0.3.1","keywords":["unicode","text","break","segment","character","grapheme cluster"],"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","_id":"grapheme-breaker@0.3.1","maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"homepage":"https://github.com/devongovett/grapheme-breaker","bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"dist":{"shasum":"271c89f1f3b06d1b5b525edf5b94085fd4a173ec","tarball":"https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.1.tgz","integrity":"sha512-afy5bk3Os8ZnRyxbtGLZggynsgMtK8Akyv34BGpWJ9aFyAqTkLHGnBwqpPxqt+T0lCs5fJu/fQhWg9K0v/3rpQ==","signatures":[{"sig":"MEUCIEtAYOj/pL53Eeb+s2BH5qSO/W7QQabIS2F/zC6ewq6OAiEAuZQObaksS4rUWh/8Mfz6Yv/h54OFiADYVVBCGDqutJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/GraphemeBreaker","_from":".","_shasum":"271c89f1f3b06d1b5b525edf5b94085fd4a173ec","gitHead":"d7e6be7670fb55a2ea01edb212bc503906eba77e","scripts":{"test":"mocha","prepublish":"coffee -c src/","postpublish":"rm -rf src/*.js"},"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"browserify":{"transform":["brfs"]},"repository":{"url":"git://github.com/devongovett/grapheme-breaker","type":"git"},"_npmVersion":"1.4.28","description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","directories":{"test":"test"},"dependencies":{"brfs":"^1.2.0","unicode-trie":"^0.2.0"},"devDependencies":{"chai":"^1.9.1","mocha":"^1.20.1","request":"^2.37.0","coffee-script":"^1.7.1"}},"0.3.2":{"name":"grapheme-breaker","version":"0.3.2","keywords":["unicode","text","break","segment","character","grapheme cluster"],"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","_id":"grapheme-breaker@0.3.2","maintainers":[{"name":"devongovett","email":"devongovett@gmail.com"}],"homepage":"https://github.com/devongovett/grapheme-breaker","bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"dist":{"shasum":"5b9e6b78c3832452d2ba2bb1cb830f96276410ac","tarball":"https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz","integrity":"sha512-mB6rwkw1Z7z4z2RkFFTd/+q6Ug1gnCgjKAervAKgBeNI1mSr8E5EUWoYzFNOZsLHFArLfpk+O8X8qXC7uvuawQ==","signatures":[{"sig":"MEYCIQDVLLAccyiCPS7s3O4rC+hTMsCQi49XKwgFfEM3SAKUQAIhAM4AofRyvaH/q9oIrOX4gpCyZZWNHgOy2rfuH6JUvLtn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"src/GraphemeBreaker","_from":".","_shasum":"5b9e6b78c3832452d2ba2bb1cb830f96276410ac","gitHead":"5aeb64c01fef20c6338302b42189e7898fe8e4d3","scripts":{"test":"mocha","prepublish":"coffee -c src/","postpublish":"rm -rf src/*.js"},"_npmUser":{"name":"devongovett","email":"devongovett@gmail.com"},"browserify":{"transform":["brfs"]},"repository":{"url":"git://github.com/devongovett/grapheme-breaker.git","type":"git"},"_npmVersion":"2.14.7","description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","directories":{"test":"test"},"_nodeVersion":"4.2.1","dependencies":{"brfs":"^1.2.0","unicode-trie":"^0.3.1"},"devDependencies":{"chai":"^1.9.1","mocha":"^1.20.1","request":"^2.37.0","coffee-script":"^1.7.1"}}},"time":{"created":"2014-07-08T06:13:31.390Z","modified":"2026-09-30T04:45:13.125Z","0.1.0":"2014-07-08T06:13:31.390Z","0.1.1":"2014-07-08T06:16:55.184Z","0.1.2":"2014-07-14T04:09:01.690Z","0.2.0":"2015-01-01T21:37:29.582Z","0.3.0":"2015-09-19T18:21:41.810Z","0.3.1":"2015-09-19T18:23:21.106Z","0.3.2":"2015-11-16T05:46:19.713Z"},"bugs":{"url":"https://github.com/devongovett/grapheme-breaker/issues"},"author":{"name":"Devon Govett","email":"devongovett@gmail.com"},"license":"MIT","homepage":"https://github.com/devongovett/grapheme-breaker","keywords":["unicode","text","break","segment","character","grapheme cluster"],"repository":{"url":"git://github.com/devongovett/grapheme-breaker.git","type":"git"},"description":"An implementation of the Unicode grapheme cluster breaking algorithm (UAX #29)","maintainers":[{"email":"devongovett@gmail.com","name":"devongovett"},{"email":"camara_luiz@yahoo.com.br","name":"blikblum-dev"}],"readme":"# grapheme-breaker\nA JavaScript implementation of the Unicode grapheme cluster breaking algorithm ([UAX #29](http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries))\n\n> It is important to recognize that what the user thinks of as a “character”—a basic unit of a writing system for a \n> language—may not be just a single Unicode code point. Instead, that basic unit may be made up of multiple Unicode \n> code points. To avoid ambiguity with the computer use of the term character, this is called a user-perceived character. \n> For example, “G” + acute-accent is a user-perceived character: users think of it as a single character, yet is actually \n> represented by two Unicode code points. These user-perceived characters are approximated by what is called a grapheme cluster, \n> which can be determined programmatically.\n\n## Installation\n\nYou can install via npm\n\n    npm install grapheme-breaker\n\n## Example\n\n```javascript\nvar GraphemeBreaker = require('grapheme-breaker');\n\n// break a string into an array of grapheme clusters\n\n\nGraphemeBreaker.break('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞') // => ['Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍', 'A̴̵̜̰͔ͫ͗͢', 'L̠ͨͧͩ͘', 'G̴̻͈͍͔̹̑͗̎̅͛́', 'Ǫ̵̹̻̝̳͂̌̌͘', '!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞']\n\n\n// or just count the number of grapheme clusters in a string\n\n\nGraphemeBreaker.countBreaks('Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘!͖̬̰̙̗̿̋ͥͥ̂ͣ̐́́͜͞') // => 6\n\n\n// use nextBreak and previousBreak to get break points starting \n// from anywhere in the string\nGraphemeBreaker.nextBreak('😜🇺🇸👍', 3) // => 6\nGraphemeBreaker.previousBreak('😜🇺🇸👍', 3) // => 2\n```\n\n## Development Notes\n\nIn order to use the library, you shouldn't need to know this, but if you're interested in\ncontributing or fixing bugs, these things might be of interest.\n\n* The `src/classes.coffee` file is automatically generated from `GraphemeBreakProperty.txt` in the Unicode \n  database by `src/generate_data.coffee`. It should be rare that you need to run this, but\n  you may if, for instance, you want to change the Unicode version.\n  \n* You can run the tests using `npm test`. They are written using `mocha`, and generated from\n  `GraphemeBreakTest.txt` from the Unicode database, which is included in the repository for performance\n  reasons while running them.\n\n## License\n\nMIT\n","readmeFilename":"README.md","users":{"indeyets":true}}