class Middleman::Gemoji::Converter

Attributes

app[R]
base_path[R]
options[R]

Public Class Methods

new(app, options) click to toggle source
# File lib/middleman-gemoji/converter.rb, line 8
def initialize(app, options)
  if !app.is_a?(Middleman::Application)
    raise "app is not Middleman::Application"
  end

  @app = app
  @options = options
  set_base_path
end

Public Instance Methods

convert(content) click to toggle source
# File lib/middleman-gemoji/converter.rb, line 18
def convert(content)
  return content if content.blank?

  if has_body?(content)
    emojify_inner_body(content)
  else
    emojify(content)
  end
end
emoji_file_exist?() click to toggle source
# File lib/middleman-gemoji/converter.rb, line 69
def emoji_file_exist?
  Dir.exist?(
    File.join(@app.root, @app.config.source, @options[:emoji_dir], 'unicode')
  )
end
emojify(content) click to toggle source
# File lib/middleman-gemoji/converter.rb, line 28
def emojify(content)
  content.to_str.gsub(/:([\w+-]+):/) do |match|
    emoji = Emoji.find_by_alias($1)
    if emoji
      image = []
      image << %(alt="#{$1}")
      image << src(emoji.image_filename)
      image << size if size
      image << style if style

      %(<img class="gemoji" #{image.join(' ').strip} />)
    else
      match
    end
  end
end
emojify_inner_body(content) click to toggle source

emojify only in the body tag

# File lib/middleman-gemoji/converter.rb, line 46
def emojify_inner_body(content)
  pattern = /<body.+?>(.+?)<\/body>/m
  content.to_str.gsub(pattern) do |html|
    emojify(html).gsub(pattern, '\1')
  end
end
has_body?(content) click to toggle source
# File lib/middleman-gemoji/converter.rb, line 53
def has_body?(content)
  !(/<body.+?>.+?<\/body>/m =~ content.to_str).nil?
end
set_base_path() click to toggle source
# File lib/middleman-gemoji/converter.rb, line 75
def set_base_path
  @base_path = 'https://assets-cdn.github.com/images/icons/emoji/'
  if emoji_file_exist?
    if /^http/ =~ @app.config[:http_prefix]
      @base_path = File.join(app.config[:http_prefix], options[:emoji_dir])
    else
      @base_path = File.join('/', app.config[:http_prefix], options[:emoji_dir])
    end
  end
end
size() click to toggle source
# File lib/middleman-gemoji/converter.rb, line 61
def size
  %(width="#{@options[:size]}" height="#{@options[:size]}") if @options[:size]
end
src(path) click to toggle source
# File lib/middleman-gemoji/converter.rb, line 57
def src(path)
  %(src="#{File.join(@base_path, path)}")
end
style() click to toggle source
# File lib/middleman-gemoji/converter.rb, line 65
def style
  %(style="#{@options[:style]}") if @options[:style]
end