| Class | Sass::Tree::ImportNode |
| In: |
lib/sass/tree/import_node.rb
|
| Parent: | RootNode |
A static node that wraps the {Sass::Tree} for an `@import`ed file. It doesn‘t have a functional purpose other than to add the `@import`ed file to the backtrace if an error occurs.
| imported_filename | [R] |
The name of the imported file as it appears in the Sass document.
@return [String] |
@param imported_filename [String] The name of the imported file
# File lib/sass/tree/import_node.rb, line 13
13: def initialize(imported_filename)
14: @imported_filename = imported_filename
15: super(nil)
16: end
@see Node#cssize
# File lib/sass/tree/import_node.rb, line 42
42: def cssize(*args)
43: super.first
44: end
Returns the resolved name of the imported file, as returned by \{Sass::Files#find_file_to_import}.
@return [String] The filename of the imported file.
This is an absolute path if the file is a `".sass"` or `".scss"` file.
@raise [Sass::SyntaxError] if `filename` ends in `".sass"` or `".scss"`
and no corresponding Sass file could be found.
# File lib/sass/tree/import_node.rb, line 27
27: def full_filename
28: @full_filename ||= import
29: end
@see Node#to_sass
# File lib/sass/tree/import_node.rb, line 32
32: def to_sass(tabs = 0, opts = {})
33: "#{' ' * tabs}@import #{@imported_filename}\n"
34: end
@see Node#to_scss
# File lib/sass/tree/import_node.rb, line 37
37: def to_scss(tabs = 0, opts = {})
38: "#{' ' * tabs}@import \"#{@imported_filename}\";\n"
39: end
@see Node#_cssize
# File lib/sass/tree/import_node.rb, line 49
49: def _cssize(*args)
50: super.children
51: rescue Sass::SyntaxError => e
52: e.modify_backtrace(:filename => children.first.filename)
53: e.add_backtrace(:filename => @filename, :line => @line)
54: raise e
55: end
Returns a static DirectiveNode if this is importing a CSS file, or parses and includes the imported Sass file.
@param environment [Sass::Environment] The lexical environment containing
variable and mixin values
# File lib/sass/tree/import_node.rb, line 62
62: def _perform(environment)
63: return DirectiveNode.new("@import url(#{full_filename})") if full_filename =~ /\.css$/
64: super
65: end
Parses the imported file and runs the dynamic Sass for it.
@param environment [Sass::Environment] The lexical environment containing
variable and mixin values
# File lib/sass/tree/import_node.rb, line 71
71: def perform!(environment)
72: environment.push_frame(:filename => @filename, :line => @line)
73: options = @options.dup
74: options.delete(:syntax)
75: root = Sass::Files.tree_for(full_filename, options)
76: @template = root.template
77: self.children = root.children
78: self.children = perform_children(environment)
79: rescue Sass::SyntaxError => e
80: e.modify_backtrace(:filename => full_filename)
81: e.add_backtrace(:filename => @filename, :line => @line)
82: raise e
83: ensure
84: environment.pop_frame
85: end
# File lib/sass/tree/import_node.rb, line 95
95: def import
96: Sass::Files.find_file_to_import(@imported_filename, import_paths)
97: rescue Exception => e
98: raise SyntaxError.new(e.message, :line => self.line, :filename => @filename)
99: end