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.

### Methods

_cssize _perform cssize full_filename invisible? new perform! to_sass to_scss

### Attributes

imported_filename | [R] | The name of the imported file as it appears in the Sass document. @return [String]

### Public Class methods

new(imported_filename)

@param imported_filename [String] The name of the imported file

[Source]

        # File lib/sass/tree/import_node.rb, line 13
    13:       def initialize(imported_filename)
    14:         @imported_filename = imported_filename
    15:         super(nil)
    16:       end

### Public Instance methods

cssize(*args)

@see Node#cssize

[Source]

        # File lib/sass/tree/import_node.rb, line 42
    42:       def cssize(*args)
    43:         super.first
    44:       end

full_filename()

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.

[Source]

        # File lib/sass/tree/import_node.rb, line 27
    27:       def full_filename
    28:         @full_filename ||= import
    29:       end

invisible?()

[Source]

        # File lib/sass/tree/import_node.rb, line 18
    18:       def invisible?; to_s.empty?; end

to_sass(tabs = 0, opts = {})

@see Node#to_sass

[Source]

        # File lib/sass/tree/import_node.rb, line 32
    32:       def to_sass(tabs = 0, opts = {})
    33:         "#{'  ' * tabs}@import #{@imported_filename}\n"
    34:       end

to_scss(tabs = 0, opts = {})

@see Node#to_scss

[Source]

        # File lib/sass/tree/import_node.rb, line 37
    37:       def to_scss(tabs = 0, opts = {})
    38:         "#{'  ' * tabs}@import \"#{@imported_filename}\";\n"
    39:       end

### Protected Instance methods

_cssize(*args)

@see Node#_cssize

[Source]

        # 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

_perform(environment)

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

[Source]

        # 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

perform!(environment)

Parses the imported file and runs the dynamic Sass for it.

@param environment [Sass::Environment] The lexical environment containing

      variable and mixin values

[Source]

        # 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

[Validate]