Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mroth/emoji-data-js

:sunglasses: Emoji encoding swiss army knife for NodeJS
https://github.com/mroth/emoji-data-js

Last synced: about 1 month ago
JSON representation

:sunglasses: Emoji encoding swiss army knife for NodeJS

Awesome Lists containing this project

README

        

# emoji-data-js

NodeJS library providing low level operations for dealing with Emoji
glyphs in the Unicode standard. :cool:

EmojiData.js is like a swiss-army knife for dealing with Emoji encoding issues.
If all you need to do is translate `:poop:` into :poop:, then there are plenty
of other libs out there that will probably do what you want. But once you are
dealing with Emoji as a fundamental part of your application, and you start to
realize the nightmare of [doublebyte encoding][doublebyte] or
[variants][variant], then this library may be your new best friend.
:raised_hands:

EmojiData.js is written by the same author as the Ruby [emoji_data.rb][rb] gem,
which is used in production by [Emojitracker.com][emojitracker] to parse well
over 100M+ emoji glyphs daily. This version was written to provide all the same
functionality while taking advantage of the crazy speed of the V8 runtime
environment. :dizzy:

[![Build Status](https://travis-ci.org/mroth/emoji-data-js.svg?branch=master)](https://travis-ci.org/mroth/emoji-data-js)

[doublebyte]: http://www.quora.com/Why-does-using-emoji-reduce-my-SMS-character-limit-to-70
[variant]: http://www.unicode.org/L2/L2011/11438-emoji-var.pdf
[rb]: https://github.com/mroth/emoji_data.rb
[emojitracker]: http://www.emojitracker.com

## Installation

npm install emoji-data

## Usage Examples

```js
> var EmojiData = require('emoji-data');

> EmojiData.from_unified('2665');
{ name: 'BLACK HEART SUIT',
unified: '2665',
variations: [ '2665-FE0F' ],
docomo: 'E68D',
au: 'EAA5',
softbank: 'E20C',
google: 'FEB1A',
short_name: 'hearts',
short_names: [ 'hearts' ],
text: null,
apple_img: true,
hangouts_img: true,
twitter_img: true }

> EmojiData.all().length
845

> EmojiData.all_with_variants().length
107

> EmojiData.find_by_short_name("moon").length
13

> EmojiData.find_by_name("tree").map(
function(c) { return [c.unified, c.render(), c.name]; }
);
[ [ '1F332', '🌲', 'EVERGREEN TREE' ],
[ '1F333', '🌳', 'DECIDUOUS TREE' ],
[ '1F334', '🌴', 'PALM TREE' ],
[ '1F384', '🎄', 'CHRISTMAS TREE' ],
[ '1F38B', '🎋', 'TANABATA TREE' ] ]

> EmojiData.scan("I ♥ when marketers talk about the ☁. #blessed").forEach(
function(ec) { console.log("Found some " + ec.short_name + "!"); }
);
Found some hearts!
Found some cloud!
```

## API Documentation

http://coffeedoc.info/github/mroth/emoji-data-js/master/

## Contributing

Please be sure to run `npm test` and help keep test coverage at :100:.

There is a full benchmark suite available via `npm run-script bench`. Please
test before and after your changes to ensure you have not caused a performance
regression.

## License

[The MIT License (MIT)](LICENSE)