Class: Somemoji::EmojiCollection
- Inherits:
-
Object
- Object
- Somemoji::EmojiCollection
- Includes:
- Enumerable
- Defined in:
- lib/somemoji/emoji_collection.rb
Instance Method Summary collapse
-
#+(emoji_collection) ⇒ Somemoji::EmojiCollection
Compounds two emoji collections into a new one.
-
#character_pattern ⇒ Regexp
A regexp to match with emoji characters.
-
#characters ⇒ Array<String>
All emoij characters included in this collection.
-
#code_pattern ⇒ Regexp
A regexp to match with emoji codes.
-
#codes ⇒ Array<String>
All emoji codes included in this collection.
- #each(&block) ⇒ Object
-
#filter_by_category(category) ⇒ Somemoji::EmojiCollection
A emoji collection filtered by a given category pattern.
-
#filter_by_keyword(keyword) ⇒ Somemoji::EmojiCollection
A emoji collection filtered by a given keyword pattern.
-
#find_by_character(character) ⇒ Somemoji::Emoji?
Finds an emoji from an emoji character (a.k.a. unicode grapheme cluster).
-
#find_by_code(code) ⇒ Somemoji::Emoji?
Finds an emoji from an emoji code.
-
#initialize(emojis = []) ⇒ EmojiCollection
constructor
A new instance of EmojiCollection.
-
#replace_character(string, &block) ⇒ String
Replaces emoji characters in a given string with a given block result.
-
#replace_code(string, &block) ⇒ String
Replaces emoji codes in a given string with a given block result.
-
#search_by_code(pattern) ⇒ Somemoji::EmojiCollection
Searches emojis that match with given pattern.
Constructor Details
#initialize(emojis = []) ⇒ EmojiCollection
Returns a new instance of EmojiCollection.
6 7 8 |
# File 'lib/somemoji/emoji_collection.rb', line 6 def initialize(emojis = []) @emojis = emojis end |
Instance Method Details
#+(emoji_collection) ⇒ Somemoji::EmojiCollection
Compounds two emoji collections into a new one
23 24 25 |
# File 'lib/somemoji/emoji_collection.rb', line 23 def +(emoji_collection) self.class.new(to_a + emoji_collection.to_a) end |
#character_pattern ⇒ Regexp
Returns a regexp to match with emoji characters.
28 29 30 |
# File 'lib/somemoji/emoji_collection.rb', line 28 def character_pattern @character_pattern ||= ::Regexp.union(characters) end |
#characters ⇒ Array<String>
Returns all emoij characters included in this collection.
33 34 35 |
# File 'lib/somemoji/emoji_collection.rb', line 33 def characters index_by_character.keys end |
#code_pattern ⇒ Regexp
Returns a regexp to match with emoji codes.
38 39 40 |
# File 'lib/somemoji/emoji_collection.rb', line 38 def code_pattern @code_pattern ||= /:(#{::Regexp.union(codes)}):/ end |
#codes ⇒ Array<String>
Returns all emoji codes included in this collection.
43 44 45 |
# File 'lib/somemoji/emoji_collection.rb', line 43 def codes index_by_code.keys end |
#each(&block) ⇒ Object
Implementation for Enumerable
48 49 50 |
# File 'lib/somemoji/emoji_collection.rb', line 48 def each(&block) @emojis.each(&block) end |
#filter_by_category(category) ⇒ Somemoji::EmojiCollection
Returns a emoji collection filtered by a given category pattern.
57 58 59 60 61 62 63 |
# File 'lib/somemoji/emoji_collection.rb', line 57 def filter_by_category(category) ::Somemoji::EmojiCollection.new( select do |emoji| category === emoji.category end ) end |
#filter_by_keyword(keyword) ⇒ Somemoji::EmojiCollection
Returns a emoji collection filtered by a given keyword pattern.
70 71 72 73 74 75 76 77 78 |
# File 'lib/somemoji/emoji_collection.rb', line 70 def filter_by_keyword(keyword) ::Somemoji::EmojiCollection.new( select do |emoji| emoji.keywords.any? do |emoji_keyword| keyword === emoji_keyword end end ) end |
#find_by_character(character) ⇒ Somemoji::Emoji?
Finds an emoji from an emoji character (a.k.a. unicode grapheme cluster)
86 87 88 |
# File 'lib/somemoji/emoji_collection.rb', line 86 def find_by_character(character) index_by_character[character] end |
#find_by_code(code) ⇒ Somemoji::Emoji?
Finds an emoji from an emoji code
97 98 99 |
# File 'lib/somemoji/emoji_collection.rb', line 97 def find_by_code(code) index_by_code[code] end |
#replace_character(string, &block) ⇒ String
Replaces emoji characters in a given string with a given block result
109 110 111 112 113 |
# File 'lib/somemoji/emoji_collection.rb', line 109 def replace_character(string, &block) string.gsub(character_pattern) do |character| block.call(find_by_character(character), character) end end |
#replace_code(string, &block) ⇒ String
Replaces emoji codes in a given string with a given block result
123 124 125 126 127 |
# File 'lib/somemoji/emoji_collection.rb', line 123 def replace_code(string, &block) string.gsub(code_pattern) do |matched_string| block.call(find_by_code(::Regexp.last_match(1)), matched_string) end end |
#search_by_code(pattern) ⇒ Somemoji::EmojiCollection
Searches emojis that match with given pattern
135 136 137 138 139 140 141 142 143 |
# File 'lib/somemoji/emoji_collection.rb', line 135 def search_by_code(pattern) self.class.new( select do |emoji| pattern === emoji.code || emoji.aliases.any? do |alias_code| pattern === alias_code end end ) end |