Class: Somemoji::EmojiCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/somemoji/emoji_collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(emojis = []) ⇒ EmojiCollection

Returns a new instance of EmojiCollection.

Parameters:



9
10
11
# File 'lib/somemoji/emoji_collection.rb', line 9

def initialize(emojis = [])
  @emojis = emojis
end

Instance Attribute Details

#emojisArray<Somemoji::Emoji> (readonly)

Returns:



6
7
8
# File 'lib/somemoji/emoji_collection.rb', line 6

def emojis
  @emojis
end

Instance Method Details

#+(emoji_collection) ⇒ Somemoji::EmojiCollection

Parameters:

Returns:



15
16
17
# File 'lib/somemoji/emoji_collection.rb', line 15

def +(emoji_collection)
  self.class.new(emojis + emoji_collection.emojis)
end

#character_patternRegexp

Returns:

  • (Regexp)


20
21
22
# File 'lib/somemoji/emoji_collection.rb', line 20

def character_pattern
  @character_pattern ||= ::Regexp.union(characters)
end

#charactersArray<String>

Returns:

  • (Array<String>)


25
26
27
# File 'lib/somemoji/emoji_collection.rb', line 25

def characters
  index_by_character.keys
end

#code_patternRegexp

Returns:

  • (Regexp)


30
31
32
# File 'lib/somemoji/emoji_collection.rb', line 30

def code_pattern
  @code_pattern ||= /:(#{::Regexp.union(codes)}):/
end

#codesArray<String>

Returns:

  • (Array<String>)


35
36
37
# File 'lib/somemoji/emoji_collection.rb', line 35

def codes
  index_by_code.keys
end

#each(&block) ⇒ Object

Note:

Implementation for Enumerable



40
41
42
# File 'lib/somemoji/emoji_collection.rb', line 40

def each(&block)
  emojis.each(&block)
end

#find_by_character(character) ⇒ Object

Parameters:

  • character (String)

    e.g. ‘“u2934”`



45
46
47
# File 'lib/somemoji/emoji_collection.rb', line 45

def find_by_character(character)
  index_by_character[character]
end

#find_by_code(code) ⇒ Object

Parameters:

  • code (String)

    e.g. ‘“arrow_heading_up”`



50
51
52
# File 'lib/somemoji/emoji_collection.rb', line 50

def find_by_code(code)
  index_by_code[code]
end

#replace_character(string, &block) ⇒ String

Parameters:

  • string (String)

Returns:

  • (String)


56
57
58
59
60
# File 'lib/somemoji/emoji_collection.rb', line 56

def replace_character(string, &block)
  string.gsub(character_pattern) do |character|
    block.call(find_by_character(character))
  end
end

#replace_code(string, &block) ⇒ String

Parameters:

  • string (String)

Returns:

  • (String)


64
65
66
67
68
# File 'lib/somemoji/emoji_collection.rb', line 64

def replace_code(string, &block)
  string.gsub(code_pattern) do
    block.call(find_by_code(::Regexp.last_match(1)))
  end
end