class Jekyll::SrcsetTag::SrcsetSourceTag

Public Class Methods

new(tag_name, markup, tokens) click to toggle source
Calls superclass method
# File lib/jekyll/srcset_tag/srcset_source_tag.rb, line 7
def initialize(tag_name, markup, tokens)
  @markup = markup
  super
end

Public Instance Methods

render(context) click to toggle source
# File lib/jekyll/srcset_tag/srcset_source_tag.rb, line 12
def render(context)
  render_markup = Liquid::Template.parse(@markup)
                                  .render(context)
                                  .gsub(/\\\{\\\{|\\\{\\%/, '\{\{' => '{{', '\{\%' => '{%')
  hash = markup_to_hash(render_markup)
  markup = hash.map { |(key, value)| "#{key}=\"#{CGI.escape_html(value)}\""}
  '<source ' + markup.join(' ') +  ' />'
end

Protected Instance Methods

markup_regex() click to toggle source
# File lib/jekyll/srcset_tag/srcset_source_tag.rb, line 31
def markup_regex
  %r{
    \w+
    \s*
    \:
    \s*
    (?:
      "(?:[^"\\]|\\.)*"
      |
      '(?:[^'\\]|\\.)*'
      |
      [^\s]+
    )
  }x
end
markup_to_hash(markup) click to toggle source
# File lib/jekyll/srcset_tag/srcset_source_tag.rb, line 23
def markup_to_hash(markup)
  matches = markup.scan(markup_regex)
  matches.each_with_object({}) do |match, memo|
    key, value = match.split(':', 2)
    memo[key.strip] = value.gsub(/\A("|')|("|')\Z/, '')
  end
end