emoji.cr
Emoji library for Crystal. Inspired by Emoji for Python
Installation
As a dependency in shard.yml
:
dependencies:
emoji:
github: veelenga/emoji.cr
branch: master
Usage
require "emoji"
puts Emoji.emojize("I :heart: :beer: and :football:")
Will print the following in console:
Also it is possible to remove all emoji from the string:
str = Emoji.emojize("Girl on :fire:")
Emoji.sanitize(str) #=> "Girl on "
Sanitizing is based on Emoji regex. There are two options available:
:simple
emoji regex (default):generated
emoji regex
Simple regex uses unicode ranges to find emojis and may give some incorrect results. Generated regex is quite big, but works correctly in 100% cases. However, it is much slower than a simple regex.
If you need more accuracy sanitizing emojis and don't care about performance, just use generated one:
Emoji.sanitize(str, regex: :generated)
Regex
require "emoji"
string = "String which contains all kinds of emoji:
- Singleton Emoji: (๐)
- Textual singleton Emoji with Emoji variation: (โถ๏ธ)
- Emoji with skin tone modifier: (๐๐ผ)
- Region flag: (๐บ๐ฆ)
- Sub-Region flag: (๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ)
- Keycap sequence: (7๏ธโฃ)
- Sequence using ZWJ (zero width joiner): (๐จโ๐ฉโ๐งโ๐ฆ)
"
string.scan(Emoji::GENERATED_EMOJI_REGEX) do |m|
puts "`#{m[0]}` - #{m[0].size} code points"
end
`๐` - 1 code points
`โถ๏ธ` - 2 code points
`๐๐ผ` - 2 code points
`๐บ๐ฆ` - 2 code points
`๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ` - 7 code points
`7๏ธโฃ` - 3 code points
`๐จโ๐ฉโ๐งโ๐ฆ` - 7 code points
Binary
You may also compile and use emojize
binary that just prints to console emojized string:
crystal build bin/emojize
./emojize It will boom: :boom:
Resources
Contributing
- Fork it ( https://github.com/veelenga/emoji.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request