Module: Rumoji
- Extended by:
- Rumoji
- Included in:
- Rumoji
- Defined in:
- lib/rumoji.rb,
lib/rumoji/emoji.rb,
lib/rumoji/version.rb,
lib/rumoji/emoji/nature.rb,
lib/rumoji/emoji/people.rb,
lib/rumoji/emoji/places.rb,
lib/rumoji/emoji/objects.rb,
lib/rumoji/emoji/symbols.rb
Defined Under Namespace
Classes: Emoji
Constant Summary collapse
- VERSION =
"0.3.0"
Instance Method Summary collapse
-
#decode(str) ⇒ Object
Transform a cheat-sheet code into an Emoji.
- #decode_io(readable, writeable = StringIO.new("")) ⇒ Object
-
#encode(str) ⇒ Object
Transform emoji into its cheat-sheet code.
- #encode_io(readable, writeable = StringIO.new("")) ⇒ Object
Instance Method Details
#decode(str) ⇒ Object
Transform a cheat-sheet code into an Emoji
16 17 18 |
# File 'lib/rumoji.rb', line 16 def decode(str) str.gsub(/:(\S?\w+):/) {|sym| Emoji.find($1.intern).to_s } end |
#decode_io(readable, writeable = StringIO.new("")) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/rumoji.rb', line 47 def decode_io(readable, writeable=StringIO.new("")) readable.each_line do |line| writeable.write decode(line) end writeable end |
#encode(str) ⇒ Object
Transform emoji into its cheat-sheet code
10 11 12 13 |
# File 'lib/rumoji.rb', line 10 def encode(str) io = StringIO.new(str) encode_io(io).string end |
#encode_io(readable, writeable = StringIO.new("")) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rumoji.rb', line 20 def encode_io(readable, writeable=StringIO.new("")) codepoints = readable.each_codepoint previous_emoji = [] codepoints.each_with_object(writeable) do |codepoint, writer| possible_emoji = Emoji.select_by_codepoint(codepoint) last_emoji = previous_emoji.pop sequence = if last_emoji.nil? || !last_emoji.codepoints.include?(codepoint) if possible_emoji.empty? [codepoint].pack("U") else multiple_codepoint_emoji = possible_emoji.select(&:multiple?) if multiple_codepoint_emoji.empty? possible_emoji.first.code else previous_emoji.concat(multiple_codepoint_emoji) ; "" end end else last_emoji.code end writer.write sequence end end |