Class Sass::Tree::CommentNode
In: lib/sass/tree/comment_node.rb
Parent: Node

A static node representing a Sass comment (silent or loud).

@see Sass::Tree

Methods

==   _perform   _to_s   invisible?   new   to_sass   to_scss  

Attributes

silent  [RW]  Whether or not the comment is silent (that is, doesn‘t output to CSS).

@return [Boolean]

value  [RW]  The text of the comment, not including `/*` and `*/`.

@return [String]

Public Class methods

@param value [String] See \{value} @param silent [Boolean] See \{silent}

[Source]

    # File lib/sass/tree/comment_node.rb, line 20
20:     def initialize(value, silent)
21:       @lines = []
22:       @value = normalize_indentation value
23:       @silent = silent
24:       super()
25:     end

Public Instance methods

Compares the contents of two comments.

@param other [Object] The object to compare with @return [Boolean] Whether or not this node and the other object

  are the same

[Source]

    # File lib/sass/tree/comment_node.rb, line 32
32:     def ==(other)
33:       self.class == other.class && value == other.value && silent == other.silent
34:     end

Returns `true` if this is a silent comment or the current style doesn‘t render comments.

@return [Boolean]

[Source]

    # File lib/sass/tree/comment_node.rb, line 40
40:     def invisible?
41:       style == :compressed || @silent
42:     end

@see Node#to_sass

[Source]

    # File lib/sass/tree/comment_node.rb, line 45
45:     def to_sass(tabs, opts = {})
46:       content = value.gsub(/\*\/$/, '').rstrip
47:       if content =~ /\A[ \t]/
48:         # Re-indent SCSS comments like this:
49:         #     /* foo
50:         #   bar
51:         #       baz */
52:         content.gsub!(/^/, '   ')
53:         content.sub!(/\A([ \t]*)\/\*/, '/*\1')
54:       end
55: 
56:       content =
57:         unless content.include?("\n")
58:           content
59:         else
60:           content.gsub!(/\n( \*|\/\/)/, "\n  ")
61:           spaces = content.scan(/\n( *)/).map {|s| s.first.size}.min
62:           sep = silent ? "\n//" : "\n *"
63:           if spaces >= 2
64:             content.gsub(/\n  /, sep)
65:           else
66:             content.gsub(/\n#{' ' * spaces}/, sep)
67:           end
68:         end
69: 
70:       content.gsub!(/\A\/\*/, '//') if silent
71:       content.gsub!(/^/, '  ' * tabs)
72:       content.rstrip + "\n"
73:     end

@see Node#to_scss

[Source]

    # File lib/sass/tree/comment_node.rb, line 76
76:     def to_scss(tabs, opts = {})
77:       spaces = ('  ' * [tabs - value[/^ */].size, 0].max)
78:       if silent
79:         value.gsub(/^[\/ ]\*/, '//').gsub(/ *\*\/$/, '')
80:       else
81:         value
82:       end.gsub(/^/, spaces) + "\n"
83:     end

Protected Instance methods

Removes this node from the tree if it‘s a silent comment.

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

  variable and mixin values

@return [Tree::Node, Array<Tree::Node>] The resulting static nodes @see Sass::Tree

[Source]

     # File lib/sass/tree/comment_node.rb, line 111
111:     def _perform(environment)
112:       return [] if @silent
113:       self
114:     end

Computes the CSS for the comment.

Returns `nil` if this is a silent comment or the current style doesn‘t render comments.

@overload to_s(tabs = 0) @param tabs [Fixnum] The level of indentation for the CSS @return [String, nil] The resulting CSS @see invisible?

[Source]

     # File lib/sass/tree/comment_node.rb, line 96
 96:     def _to_s(tabs = 0, _ = nil)
 97:       return if invisible?
 98:       spaces = ('  ' * [tabs - 1 - value[/^ */].size, 0].max)
 99: 
100:       content = value.gsub(/^/, spaces)
101:       content.gsub!(/\n +(\* *)?/, ' ') if style == :compact
102:       content
103:     end

[Validate]