Class: Jekyll::Emoji
- Inherits:
-
Object
- Object
- Jekyll::Emoji
- Defined in:
- lib/jemoji.rb
Constant Summary collapse
- GITHUB_DOT_COM_ASSET_HOST_URL =
"https://github.githubassets.com"
- ASSET_PATH =
"/images/icons/"
- BODY_START_TAG =
"<body"
- OPENING_BODY_TAG_REGEX =
%r!<body(.*?)>\s*!m.freeze
Class Method Summary collapse
-
.emoji_src(config = {}) ⇒ Object
Public: Calculate the asset root source for the given config.
-
.emojiable?(doc) ⇒ Boolean
Public: Defines the conditions for a document to be emojiable.
- .emojify(doc) ⇒ Object
-
.filter_with_emoji(src) ⇒ Object
Public: Create or fetch the filter for the given {src} asset root.
-
.filters ⇒ Object
Public: Filters hash where the key is the asset root source.
Class Method Details
.emoji_src(config = {}) ⇒ Object
Public: Calculate the asset root source for the given config. The custom emoji asset root can be defined in the config as emoji.src, and must be a valid URL (i.e. it must include a protocol and valid domain)
config - the hash-like configuration of the document’s site
Returns a full URL to use as the asset root URL. Defaults to the root URL for assets provided by an ASSET_HOST_URL environment variable, otherwise the root URL for emoji assets at assets-cdn.github.com.
52 53 54 55 56 57 58 |
# File 'lib/jemoji.rb', line 52 def emoji_src(config = {}) if config.key?("emoji") && config["emoji"].key?("src") config["emoji"]["src"] else default_asset_root end end |
.emojiable?(doc) ⇒ Boolean
Public: Defines the conditions for a document to be emojiable.
doc - the Jekyll::Document or Jekyll::Page
Returns true if the doc is written & is HTML.
65 66 67 68 |
# File 'lib/jemoji.rb', line 65 def emojiable?(doc) (doc.is_a?(Jekyll::Page) || doc.write?) && doc.output_ext == ".html" || doc.permalink&.end_with?("/") end |
.emojify(doc) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/jemoji.rb', line 14 def emojify(doc) return unless doc.output&.match?(HTML::Pipeline::EmojiFilter.emoji_pattern) doc.output = if doc.output.include? BODY_START_TAG replace_document_body(doc) else src = emoji_src(doc.site.config) filter_with_emoji(src).call(doc.output)[:output].to_s end end |
.filter_with_emoji(src) ⇒ Object
Public: Create or fetch the filter for the given {src} asset root.
src - the asset root URL (e.g. github.githubassets.com/images/icons/)
Returns an HTML::Pipeline instance for the given asset root.
30 31 32 33 34 |
# File 'lib/jemoji.rb', line 30 def filter_with_emoji(src) filters[src] ||= HTML::Pipeline.new([ HTML::Pipeline::EmojiFilter, ], :asset_root => src, :img_attrs => { :align => nil }) end |
.filters ⇒ Object
Public: Filters hash where the key is the asset root source. Effectively a cache.
38 39 40 |
# File 'lib/jemoji.rb', line 38 def filters @filters ||= {} end |