class CssMedia::Processor
Public Class Methods
new(params = { })
click to toggle source
# File lib/css_media/processor.rb, line 6 def initialize(params = { }) @params = params || { } end
Public Instance Methods
process(css, opts = { })
click to toggle source
Process `css` and return result.
Options can be:
-
`from` with input CSS file name. Will be used in error messages.
-
`to` with output CSS file name.
-
`map` with true to generate new source map or with previous map.
# File lib/css_media/processor.rb, line 16 def process(css, opts = { }) fn = opts.fetch(:from, '').downcase if fn =~ /[^a-z](media[_-]only|non?[_-]media)[^a-z]/ || css =~ %r{/[/*]\s*css[_-]media:?\s*(media[_-]only|non?[_-]media)[^a-z]}i css = send($1.gsub('-', '_'), css) end Result.new(css) end
Private Instance Methods
filter_media(css, want_media)
click to toggle source
# File lib/css_media/processor.rb, line 36 def filter_media(css, want_media) tree = Crass.parse(css, :preserve_comments => true) want = tree.select{|rule| is_comment?(rule) || is_media?(rule) == want_media} Crass::Parser.stringify(want) end
is_comment?(rule)
click to toggle source
# File lib/css_media/processor.rb, line 32 def is_comment?(rule) rule[:node] == :comment || rule[:node] == :whitespace end
is_media?(rule)
click to toggle source
# File lib/css_media/processor.rb, line 27 def is_media?(rule) # rule[:node] == :style_rule && rule[:selector][:value] =~ /^media\W/i rule[:node] == :at_rule && !!(rule[:name] =~ /media/i) end
media_only(css)
click to toggle source
# File lib/css_media/processor.rb, line 47 def media_only(css) filter_media(css, true) end
non_media(css)
click to toggle source
# File lib/css_media/processor.rb, line 42 def non_media(css) filter_media(css, false) end
Also aliased as: no_media