/usr/lib/ruby/vendor_ruby/sass/script/tree/list_literal.rb is in ruby-sass 3.4.6-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | module Sass::Script::Tree
# A parse tree node representing a list literal. When resolved, this returns a
# {Sass::Tree::Value::List}.
class ListLiteral < Node
# The parse nodes for members of this list.
#
# @return [Array<Node>]
attr_reader :elements
# The operator separating the values of the list. Either `:comma` or
# `:space`.
#
# @return [Symbol]
attr_reader :separator
# Creates a new list literal.
#
# @param elements [Array<Node>] See \{#elements}
# @param separator [Symbol] See \{#separator}
def initialize(elements, separator)
@elements = elements
@separator = separator
end
# @see Node#children
def children; elements; end
# @see Value#to_sass
def to_sass(opts = {})
return "()" if elements.empty?
precedence = Sass::Script::Parser.precedence_of(separator)
members = elements.map do |v|
if v.is_a?(ListLiteral) && Sass::Script::Parser.precedence_of(v.separator) <= precedence ||
separator == :space && v.is_a?(UnaryOperation) &&
(v.operator == :minus || v.operator == :plus)
"(#{v.to_sass(opts)})"
else
v.to_sass(opts)
end
end
return "(#{members.first},)" if separator == :comma && members.length == 1
members.join(sep_str(nil))
end
# @see Node#deep_copy
def deep_copy
node = dup
node.instance_variable_set('@elements', elements.map {|e| e.deep_copy})
node
end
def inspect
"(#{elements.map {|e| e.inspect}.join(separator == :space ? ' ' : ', ')})"
end
protected
def _perform(environment)
list = Sass::Script::Value::List.new(
elements.map {|e| e.perform(environment)},
separator)
list.source_range = source_range
list.options = options
list
end
private
def sep_str(opts = options)
return ' ' if separator == :space
return ',' if opts && opts[:style] == :compressed
', '
end
end
end
|