class Content::Pipeline::Filters::Gemoji

Constants

EmojiLiquidTag
EmojiPattern
EmojiTag

Public Class Methods

new(*args) click to toggle source
Calls superclass method Content::Pipeline::Filter::new
# File lib/content/pipeline/filters/gemoji.rb, line 12
def initialize(*args)
  super(*args)
  @opts[:asset_path] ||= \
    "/assets"
end

Private Instance Methods

gemoji() click to toggle source
# File lib/content/pipeline/filters/gemoji.rb, line 19
def gemoji
  @str = @str.to_nokogiri_fragment
  @str.xpath(".//child::text()").each do |n|
    parse_node(
      n
    )
  end
end
parse_node(node) click to toggle source
# File lib/content/pipeline/filters/gemoji.rb, line 28
def parse_node(node)
  return node if node.ancestors.any? do |n|
    ["pre", "code"].include?(
      n.node_name
    )
  end

  node.replace(node.to_html.gsub(EmojiPattern) do
    ep = "#{@opts[:asset_path].chomp("/")}/#{$1}.png"
    en = $1

    if ! @opts[:tag] && ! @opts[:tag].is_a?(Proc)
      if @opts[:as_liquid_asset]
        then EmojiLiquidTag % [ep, en]
        else EmojiTag % [
          ep, en
        ]
      end
    else
      @opts[:tag].call(
        ep, en
      )
    end
  end)
end