blob: 3178de03efffa143643a362b730349c3ff612d4c [file] [log] [blame]
module Sass::Tree
# A static node representing a `@media` rule.
# `@media` rules behave differently from other directives
# in that when they're nested within rules,
# they bubble up to top-level.
#
# @see Sass::Tree
class MediaNode < DirectiveNode
# TODO: parse and cache the query immediately if it has no dynamic elements
# The media query for this rule, interspersed with {Sass::Script::Tree::Node}s
# representing `#{}`-interpolation. Any adjacent strings will be merged
# together.
#
# @return [Array<String, Sass::Script::Tree::Node>]
attr_accessor :query
# The media query for this rule, without any unresolved interpolation. It's
# only set once {Tree::Visitors::Perform} has been run.
#
# @return [Sass::Media::QueryList]
attr_accessor :resolved_query
# @param query [Array<String, Sass::Script::Tree::Node>] See \{#query}
def initialize(query)
@query = query
super('')
end
# @see DirectiveNode#value
def value; raise NotImplementedError; end
# @see DirectiveNode#name
def name; '@media'; end
# @see DirectiveNode#resolved_value
def resolved_value
@resolved_value ||= "@media #{resolved_query.to_css}"
end
# True when the directive has no visible children.
#
# @return [Boolean]
def invisible?
children.all? {|c| c.invisible?}
end
end
end