module JAPR::LiquidBlockExtensions

Helper module used by JAPR::AssetTag as well as classed derived from it (Liquid tag block extensions) See documentation here: github.com/Shopify/liquid/wiki/liquid-for-programmers#create-your-own-tag-blocks

Public Instance Methods

render(context) click to toggle source
# File lib/japr/extensions/liquid/liquid_block_extensions.rb, line 20
def render(context)
  site = context.registers[:site]
  config = site.config.fetch('asset_pipeline', {})

  # Run Jekyll Asset Pipeline
  pipeline, cached = run_pipeline(site, config)

  return nil unless pipeline.is_a?(Pipeline)

  # Prevent Jekyll from cleaning up saved assets if new pipeline
  preserve_assets(site, config, pipeline) unless cached

  # Return HTML tag pointing to asset
  pipeline.html
end

Private Instance Methods

preserve_assets(site, config, pipeline) click to toggle source
# File lib/japr/extensions/liquid/liquid_block_extensions.rb, line 43
def preserve_assets(site, config, pipeline)
  pipeline.assets.each do |asset|
    config = JAPR::DEFAULTS.merge(config)
    staging_path = File.expand_path(File.join(site.source,
                                              config['staging_path']))
    site.static_files << Jekyll::StaticFile.new(site, staging_path,
                                                asset.output_path,
                                                asset.filename)
  end
end
run_pipeline(site, config) click to toggle source
# File lib/japr/extensions/liquid/liquid_block_extensions.rb, line 38
def run_pipeline(site, config)
  Pipeline.run(nodelist.first, @markup.strip, site.source, site.dest,
               self.class.tag_name, self.class.output_type, config)
end