class Jekyll::Assets::Plugins::Alternates

Public Instance Methods

call(input) click to toggle source
# File lib/jekyll/assets/plugins/alternates.rb, line 27
def call(input)
  comp = input[:environment].asset_config[:compression]
  data = Crass.parse(input[:data] || "", preserve_comments: true)
  data.each do |v|
    next unless v[:node] == :style_rule
    v[:children] = v[:children].each_with_object([]) do |c, a|
      if alternate?(c)
        a << (comp ? NODE2 : NODE3)
        a << NODE1
      end

      a << c
    end
  end

  {
    data: Crass::Parser.stringify(data, {
      preserve_comments: true,
    }),
  }
end

Private Instance Methods

alternate?(c) click to toggle source
# File lib/jekyll/assets/plugins/alternates.rb, line 50
def alternate?(c)
  c[:node] == :property && (
    c[:name] =~ RTEST || c[:value] =~ RTEST
  )
end