Class: RubyCord::UnicodeEmoji

Inherits:
Emoji
  • Object
show all
Defined in:
lib/rubycord/emoji.rb

Overview

Represents a unicode emoji (default emoji) in discord.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Emoji

#==, #eql?

Constructor Details

#initialize(name, tone: 0) ⇒ UnicodeEmoji

Initialize a new unicode emoji.

Parameters:

  • name (String)

    The name of the emoji.

  • tone (Integer) (defaults to: 0)

    The skin tone of the emoji.



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/rubycord/emoji.rb', line 248

def initialize(name, tone: 0)
  if Internal::EmojiTable::DISCORD_TO_UNICODE.key?(name)
    @name = name
    @value = Internal::EmojiTable::DISCORD_TO_UNICODE[name]
  elsif Internal::EmojiTable::UNICODE_TO_DISCORD.key?(name)
    @name = Internal::EmojiTable::UNICODE_TO_DISCORD[name][0]
    @value = name
  elsif Internal::EmojiTable::SKIN_TONES.any? { |t| name.include?(t) }
    name2 = name.dup
    Internal::EmojiTable::SKIN_TONES.each.with_index do |t, i|
      next unless name2.include?(t)

      @skin_tone = i
      name2.sub!(t, "")
      break
    end
    raise ArgumentError, "Invalid skin tone: #{tone}" unless @skin_tone

    @name = Internal::EmojiTable::UNICODE_TO_DISCORD[name2].first
    @value = name
  else
    raise ArgumentError, "No such emoji: #{name}"
  end
  if tone.positive?
    unless @value = Internal::EmojiTable::DISCORD_TO_UNICODE["#{name}_tone#{tone}"]
      raise ArgumentError, "Invalid skin tone for emoji: #{name}"
    end

    @name = "#{name}_tone#{tone}"
    @skin_tone = tone
  end
end

Instance Attribute Details

#nameString (readonly)

Returns The name of the emoji. (e.g. :grinning:).

Returns:

  • (String)

    The name of the emoji. (e.g. :grinning:)



236
237
238
# File 'lib/rubycord/emoji.rb', line 236

def name
  @name
end

#skin_toneInteger (readonly)

Returns The skin tone of the emoji.

Returns:

  • (Integer)

    The skin tone of the emoji.



240
241
242
# File 'lib/rubycord/emoji.rb', line 240

def skin_tone
  @skin_tone
end

#valueString (readonly)

Returns The unicode value of the emoji. (e.g. U+1F600).

Returns:

  • (String)

    The unicode value of the emoji. (e.g. U+1F600)



238
239
240
# File 'lib/rubycord/emoji.rb', line 238

def value
  @value
end

Instance Method Details

#inspectObject



295
296
297
# File 'lib/rubycord/emoji.rb', line 295

def inspect
  "#<#{self.class} :#{@name}:>"
end

#to_sString

Returns The unicode string of the emoji.

Returns:

  • (String)

    The unicode string of the emoji.



282
283
284
# File 'lib/rubycord/emoji.rb', line 282

def to_s
  @value
end

#to_uriString

Format the emoji for URI.

Returns:

  • (String)

    the formatted emoji.



291
292
293
# File 'lib/rubycord/emoji.rb', line 291

def to_uri
  URI.encode_www_form_component(@value)
end