class Jekyll::KargWare::SriScssHashTag

jekyll-kw-sri custom tag

Public Class Methods

new(tag_name, input, tokens) click to toggle source
Calls superclass method
# File lib/jekyll-kw-sri.rb, line 12
def initialize(tag_name, input, tokens)
  super

  raise 'Please enter a file path' if input.length <= 0
  # File.exists? is file?
end

Public Instance Methods

cache_compiled_scss(path, _context, compute) click to toggle source
# File lib/jekyll-kw-sri.rb, line 49
def cache_compiled_scss(path, _context, compute)
  @cached_scss ||= {}
  if @cached_scss.key?(path)
    @cached_scss[path]
  else
    @cached_scss[path] = compute.call
  end
end
render(context) click to toggle source
Calls superclass method
# File lib/jekyll-kw-sri.rb, line 19
def render(context)
  cache_compiled_scss(@file, context, lambda {
    if context.nil? || context.registers[:site].nil?
      puts 'WARNING: There was no context, generate default site and context'
      site = Jekyll::Site.new(Jekyll::Configuration::DEFAULTS)
      context = Liquid::Context.new({}, {}, { site: site })
    else
      site = context.registers[:site]
      # Read the global configuration
      @sri_config = context.registers[:site].config['kw-sri'] || {}
    end

    # Render the context with the base-class
    converter = site.find_converter_instance(Jekyll::Converters::Scss)
    result = super(context) # super_render(context)
    scss = result.gsub(/^---.*---/m, '')
    data = converter.convert(scss)

    # Get path out of the file object
    file = render_variable(context) || @file
    validate_file_name(file)
    path = locate_include_file(context, file, site.safe)

    # Use default config for kw-sri if it is nil
    @sri_config ||= Jekyll::KargWare::Integrity::Configuration::DEFAULT_CONFIG

    Integrity::Parser.new(@sri_config).calc_integrity(path, data)
  })
end
tag_includes_dirs(context) click to toggle source

Register the sccs file as include folder

# File lib/jekyll-kw-sri.rb, line 59
def tag_includes_dirs(context)
  [context.registers[:site].source].freeze
end