Class: VivlioStarter::CLI::Techbook::EmojiReplacer

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio_starter/cli/techbook/emoji_replacer.rb

Constant Summary collapse

EMOJI_REGEX =

Unicode Emoji 検出用正規表現 Emoji_Presentation を持つ文字 + Variation Selector 付き文字を対象とする

/[\p{Emoji_Presentation}\p{Emoji}\uFE0F]+/

Instance Method Summary collapse

Constructor Details

#initialize(emoji_dir = nil) ⇒ EmojiReplacer

Returns a new instance of EmojiReplacer.

Parameters:

  • emoji_dir (Pathname, String, nil) (defaults to: nil)

    SVG ディレクトリ(nil 時は gem 同梱パスを使用)



15
16
17
# File 'lib/vivlio_starter/cli/techbook/emoji_replacer.rb', line 15

def initialize(emoji_dir = nil)
  @emoji_dir = Pathname(emoji_dir || default_emoji_dir)
end

Instance Method Details

#process(html) ⇒ String

HTML 中の絵文字を SVG img タグに差し替える

Parameters:

  • html (String)

Returns:

  • (String)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/vivlio_starter/cli/techbook/emoji_replacer.rb', line 22

def process(html)
  in_ignored_element = nil

  html.split(/(<[^>]+>)/).map do |part|
    if part.start_with?('<')
      in_ignored_element = update_ignored_element_state(part, in_ignored_element)
      part
    elsif in_ignored_element
      part
    else
      replace_emoji_in_text(part)
    end
  end.join
end

#replace_emoji_in_text(text) ⇒ Object



37
38
39
40
41
# File 'lib/vivlio_starter/cli/techbook/emoji_replacer.rb', line 37

def replace_emoji_in_text(text)
  text.gsub(EMOJI_REGEX) do |match|
    replace_emoji(match)
  end
end