class Sass::Tree::CommentNode

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

@see Sass::Tree

Attributes

resolved_value[RW]

The text of the comment after any interpolated SassScript has been resolved. Only set once {Tree::Visitors::Perform} has been run.

@return [String]

type[RW]

The type of the comment. ‘:silent` means it’s never output to CSS, ‘:normal` means it’s output in every compile mode except ‘:compressed`, and `:loud` means it’s output even in ‘:compressed`.

@return [Symbol]

value[RW]

The text of the comment, not including ‘/*` and `*/`. Interspersed with {Sass::Script::Tree::Node}s representing `#{}`-interpolation if this is a loud comment.

@return [Array<String, Sass::Script::Tree::Node>]

Public Class Methods

new(value, type) click to toggle source

@param value [Array<String, Sass::Script::Tree::Node>] See {#value} @param type [Symbol] See {#type}

Calls superclass method
# File lib/sass/tree/comment_node.rb, line 31
def initialize(value, type)
  @value = Sass::Util.with_extracted_values(value) {|str| normalize_indentation str}
  @type = type
  super()
end

Public Instance Methods

==(other) click to toggle source

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
# File lib/sass/tree/comment_node.rb, line 42
def ==(other)
  self.class == other.class && value == other.value && type == other.type
end
invisible?() click to toggle source

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

Comments starting with ! are never invisible (and the ! is removed from the output.)

@return [Boolean]

# File lib/sass/tree/comment_node.rb, line 52
def invisible?
  case @type
  when :loud; false
  when :silent; true
  else; style == :compressed
  end
end
lines() click to toggle source

Returns the number of lines in the comment.

@return [Integer]

# File lib/sass/tree/comment_node.rb, line 63
def lines
  @value.inject(0) do |s, e|
    next s + e.count("\n") if e.is_a?(String)
    next s
  end
end

Private Instance Methods

normalize_indentation(str) click to toggle source
# File lib/sass/tree/comment_node.rb, line 72
def normalize_indentation(str)
  ind = str.split("\n").inject(str[/^[ \t]*/].split("")) do |pre, line|
    line[/^[ \t]*/].split("").zip(pre).inject([]) do |arr, (a, b)|
      break arr if a != b
      arr << a
    end
  end.join
  str.gsub(/^#{ind}/, '')
end