Class: Jekyll::Spaceship::EmojiProcessor
- Defined in:
- lib/jekyll-spaceship/processors/emoji-processor.rb
Constant Summary
Constants inherited from Processor
Processor::DEFAULT_PRIORITY, Processor::PRIORITY_MAP
Instance Attribute Summary
Attributes inherited from Processor
#config, #exclusions, #handled, #logger, #page, #priority, #registers
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Processor
#after_exclude, #converter, #dispatch, escape_html, exclude, #ext, #filename, #initialize, #initialize_exclusions, #initialize_priority, #initialize_register, #name, #on_handle_html_block, #on_handled, #output_ext, #pre_exclude, priority, #process?, register
Constructor Details
This class inherits a constructor from Jekyll::Spaceship::Processor
Class Method Details
.config ⇒ Object
9 10 11 12 13 14 15 16 |
# File 'lib/jekyll-spaceship/processors/emoji-processor.rb', line 9 def self.config { 'css' => { 'class' => 'emoji' }, 'src' => 'https://github.githubassets.com/images/icons/emoji/' } end |
Instance Method Details
#on_handle_html(content) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/jekyll-spaceship/processors/emoji-processor.rb', line 18 def on_handle_html(content) # handle emoji markup content.scan(/:([\w\d+-]+):/) do |match| emoji = Emoji.find_by_alias match[0] next if emoji.nil? self.handled = true # escape plus sign emoji_name = emoji.name.gsub('+', '\\\+') css_class = self.config['css']['class'] content = content.gsub( /(?<!\=")\s*:#{emoji_name}:\s*(?!"\s)/, "<img class=\"#{css_class}\""\ " title=\":#{emoji.name}:\""\ " alt=\":#{emoji.name}:\""\ " raw=\"#{emoji.raw}\""\ " src=\"#{config['src']}#{emoji.image_filename}\""\ " style=\"vertical-align: middle; display: inline;"\ " max-width: 1em; visibility: hidden;\""\ " onload=\"this.style.visibility='visible'\""\ " onerror=\"this.replaceWith(this.getAttribute('raw'))\">"\ "</img>" ) end content end |