Sha256: f9b800e873295c7e16843969f3964d328e7818254fe024df94e52ff631f993be
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
module MdEmoji class Render < Redcarpet::Render::HTML def preprocess(document) if include_emoji?(document) replace_emoji(document) else document end end def block_code(text, lang) "<pre><code#{%{ class="#{lang}"} if lang}>#{revert_emoji(text)}</code></pre>" end def codespan(text) "<code>#{revert_emoji(text)}</code>" end # Replaces valid emoji characters, ie :smile:, with img tags # # Valid emoji charaters are listed in +MdEmoji::EMOJI+ def replace_emoji(text) text.gsub(/:(\S+):/) do |emoji| emoji_code = emoji #.gsub("|", "_") emoji = emoji_code.gsub(":", "") if MdEmoji::EMOJI.include?(emoji) file_name = "#{emoji.gsub('+', 'plus')}.png" default_size = %{height="20" width="20"} %{<img src="/assets/emojis/#{file_name}" class="emoji" } + %{title="#{emoji_code}" alt="#{emoji_code}" #{default_size}>} else emoji_code end end end private # Returns +true+ if emoji are present in +text+, otherwise returns +false+ def include_emoji?(text) text && text[/:\S+:/] end # Replaces emoji images with plain text def revert_emoji(text) text.gsub(/<[^>]+class="emoji"\stitle="(:\S+:)"[^>]+>/) do |emoji| ":#{$1}:" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
md_emoji-0.0.4 | lib/md_emoji/render.rb |