class Jekyll::Octicons

Constants

Syntax

Syntax for the octicon symbol

TagAttributes

Copied from Liquid::TagAttributes to allow dashes in tag names:

{% octicon alert area-label:"Hello World!" %}
VERSION
Variable

For interpolation, look for liquid variables

Public Class Methods

new(tag_name, markup, options) click to toggle source
Calls superclass method
# File lib/jekyll-octicons.rb, line 22
def initialize(tag_name, markup, options)
  super
  @markup = markup

  # If there's interpolation going on, we need to do this in render
  prepare(markup) unless match = markup.match(Variable)
end

Public Instance Methods

render(context) click to toggle source
# File lib/jekyll-octicons.rb, line 30
def render(context)
  prepare(interpolate(@markup, context)) if match = @markup.match(Variable)

  return nil if @symbol.nil?
  ::Octicons::Octicon.new(@symbol, @options).to_svg
end

Private Instance Methods

interpolate(markup, context) click to toggle source
# File lib/jekyll-octicons.rb, line 39
def interpolate(markup, context)
  markup.scan Variable do |variable|
    markup = markup.gsub(Variable, lookup_variable(context, variable.first))
  end
  markup
end
prepare(markup) click to toggle source
# File lib/jekyll-octicons.rb, line 46
def prepare(markup)
  @symbol = symbol(markup)
  @options = string_to_hash(markup)
end
string_to_hash(markup) click to toggle source

Create a ruby hash from a string passed by the jekyll tag

# File lib/jekyll-octicons.rb, line 58
def string_to_hash(markup)
  options = {}

  if match = markup.match(Syntax)
    markup.scan(TagAttributes) do |key, value|
      options[key.to_sym] = value.gsub(/\A"|"\z/, "")
    end
  end

  options
end
symbol(markup) click to toggle source
# File lib/jekyll-octicons.rb, line 51
def symbol(markup)
  if match = markup.match(Syntax)
    match[1]
  end
end