blob: d9a592693ea2ec6e22c1ff60310b9b25ec960d72 [file] [log] [blame]
module Sass::Tree
# A node representing an `@import` rule that's importing plain CSS.
#
# @see Sass::Tree
class CssImportNode < DirectiveNode
# The URI being imported, either as a plain string or an interpolated
# script string.
#
# @return [String, Sass::Script::Tree::Node]
attr_accessor :uri
# The text of the URI being imported after any interpolated SassScript has
# been resolved. Only set once {Tree::Visitors::Perform} has been run.
#
# @return [String]
attr_accessor :resolved_uri
# The supports condition for this import.
#
# @return [Sass::Supports::Condition]
attr_accessor :supports_condition
# 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 uri [String, Sass::Script::Tree::Node] See \{#uri}
# @param query [Array<String, Sass::Script::Tree::Node>] See \{#query}
# @param supports_condition [Sass::Supports::Condition] See \{#supports_condition}
def initialize(uri, query = [], supports_condition = nil)
@uri = uri
@query = query
@supports_condition = supports_condition
super('')
end
# @param uri [String] See \{#resolved_uri}
# @return [CssImportNode]
def self.resolved(uri)
node = new(uri)
node.resolved_uri = uri
node
end
# @see DirectiveNode#value
def value; raise NotImplementedError; end
# @see DirectiveNode#resolved_value
def resolved_value
@resolved_value ||=
begin
str = "@import #{resolved_uri}"
str << " supports(#{supports_condition.to_css})" if supports_condition
str << " #{resolved_query.to_css}" if resolved_query
str
end
end
end
end