class Jekyll::SrcsetTag::SrcsetTag
Public Class Methods
new(tag_name, markup, tokens)
click to toggle source
Calls superclass method
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 9 def initialize(tag_name, markup, tokens) @markup = markup super end
Public Instance Methods
render(context)
click to toggle source
Calls superclass method
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 14 def render(context) render_markup = Liquid::Template.parse(@markup) .render(context) .gsub(/\\\{\\\{|\\\{\\%/, '\{\{' => '{{', '\{\%' => '{%') settings = srcset_settings(context) site = context.registers[:site] site.config['keep_files'] << settings['output'] unless site.config['keep_files'].include?(settings['output']) image = image File.join(site.source, settings['source']), File.join(site.dest, settings['output']), '/' + settings['output'], render_markup, sources(super) image.generate_images! image.to_html end
Protected Instance Methods
image(source_path, output_path, web_output_path, markup, sources)
click to toggle source
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 46 def image(source_path, output_path, web_output_path, markup, sources) markup = markup_regex.match(markup) unless markup raise "srcset tag doesn't look right - it should be {% srcset image_src [ppi:1,2] [html_attributes] %}" end Image.new(source_path: source_path, output_path: output_path, web_output_path: web_output_path, image_path: markup[:image_src], ppi: markup[:ppi] || 1, sources: sources, html_attributes: markup[:html_attr]) end
markup_regex()
click to toggle source
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 60 def markup_regex %r{ ^ (?<image_src>[^\s]+\.[a-zA-Z0-9]{3,4}) \s* (ppi:(?<ppi>(\d(\.\d\d?)?,)*\d(\.\d\d?)?))? \s* (?<html_attr>[\s\S]+)? $ }x end
register_regenerate(context, image)
click to toggle source
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 80 def register_regenerate(context, image) site = context.registers[:site] if context.registers[:page] and context.registers[:page].has_key? 'path' site.regenerator.add_dependency site.in_source_dir(context.registers[:page]['path']), image.source_image_path end end
sources(content)
click to toggle source
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 34 def sources(content) # return sources objects html = Nokogiri::HTML(content) html.css('source').map do |source| Image::Source.new(width: source.attr('width'), height: source.attr('height'), media: source.attr('media'), size: source.attr('size'), fallback: source.attr('fallback') == 'true') end end
srcset_settings(context)
click to toggle source
# File lib/jekyll/srcset_tag/srcset_tag.rb, line 72 def srcset_settings(context) settings = context.registers[:site].config['srcset'] settings ||= {} settings['source'] ||= '_assets/images/fullsize' settings['output'] ||= 'images/generated' settings end