Class: Sass::Script::Tree::Interpolation

Inherits:
Node
  • Object
show all
Defined in:
.ruby-sass/lib/sass/script/tree/interpolation.rb

Overview

A SassScript object representing `#{}` interpolation outside a string.

See Also:

Instance Attribute Summary (collapse)

Attributes inherited from Node

#filename, #line, #options, #source_range

Instance Method Summary (collapse)

Methods inherited from Node

#force_division!, #perform

Constructor Details

#initialize(before, mid, after, wb, wa, opts = {}) ⇒ Interpolation

Interpolation in a property is of the form `before ##mid after`.

Parameters:



52
53
54
55
56
57
58
59
60
61
62
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 52

def initialize(before, mid, after, wb, wa, opts = {})
  # rubocop:enable ParameterLists
  @before = before
  @mid = mid
  @after = after
  @whitespace_before = wb
  @whitespace_after = wa
  @originally_text = opts[:originally_text] || false
  @warn_for_color = opts[:warn_for_color] || false
  @deprecation = opts[:deprecation] || :none
end

Constructor Details

#initialize(before, mid, after, wb, wa, opts = {}) ⇒ Interpolation

Interpolation in a property is of the form `before ##mid after`.

Parameters:



52
53
54
55
56
57
58
59
60
61
62
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 52

def initialize(before, mid, after, wb, wa, opts = {})
  # rubocop:enable ParameterLists
  @before = before
  @mid = mid
  @after = after
  @whitespace_before = wb
  @whitespace_after = wa
  @originally_text = opts[:originally_text] || false
  @warn_for_color = opts[:warn_for_color] || false
  @deprecation = opts[:deprecation] || :none
end

Instance Attribute Details

#afterNode (readonly)

Returns The SassScript after the interpolation

Returns:

  • (Node)

    The SassScript after the interpolation



13
14
15
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 13

def after
  @after
end

#beforeNode (readonly)

Returns The SassScript before the interpolation

Returns:

  • (Node)

    The SassScript before the interpolation



7
8
9
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 7

def before
  @before
end

#deprecationSymbol (readonly)

The type of interpolation deprecation for this node.

This can be `:none`, indicating that the node doesn't use deprecated interpolation; `:immediate`, indicating that a deprecation warning should be emitted as soon as possible; or `:potential`, indicating that a deprecation warning should be emitted if the resulting string is used in a way that would distinguish it from a list.

Returns:

  • (Symbol)


39
40
41
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 39

def deprecation
  @deprecation
end

#midNode (readonly)

Returns The SassScript within the interpolation

Returns:

  • (Node)

    The SassScript within the interpolation



10
11
12
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 10

def mid
  @mid
end

#originally_textBoolean (readonly)

Returns Whether the original format of the interpolation was plain text, not an interpolation. This is used when converting back to SassScript.

Returns:

  • (Boolean)

    Whether the original format of the interpolation was plain text, not an interpolation. This is used when converting back to SassScript.



24
25
26
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 24

def originally_text
  @originally_text
end

#warn_for_colorBoolean (readonly)

Returns Whether a color value passed to the interpolation should generate a warning.

Returns:

  • (Boolean)

    Whether a color value passed to the interpolation should generate a warning.



28
29
30
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 28

def warn_for_color
  @warn_for_color
end

#whitespace_afterBoolean (readonly)

Returns Whether there was whitespace between `}` and `after`

Returns:

  • (Boolean)

    Whether there was whitespace between `}` and `after`



19
20
21
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 19

def whitespace_after
  @whitespace_after
end

#whitespace_beforeBoolean (readonly)

Returns Whether there was whitespace between `before` and `#{`

Returns:

  • (Boolean)

    Whether there was whitespace between `before` and `#{`



16
17
18
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 16

def whitespace_before
  @whitespace_before
end

Instance Method Details

#childrenArray<Node>

Returns the three components of the interpolation, `before`, `mid`, and `after`.

Returns:

See Also:



102
103
104
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 102

def children
  [@before, @mid, @after].compact
end

#deep_copyObject

See Also:



107
108
109
110
111
112
113
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 107

def deep_copy
  node = dup
  node.instance_variable_set('@before', @before.deep_copy) if @before
  node.instance_variable_set('@mid', @mid.deep_copy)
  node.instance_variable_set('@after', @after.deep_copy) if @after
  node
end

#inspectString

Returns A human-readable s-expression representation of the interpolation

Returns:

  • (String)

    A human-readable s-expression representation of the interpolation



65
66
67
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 65

def inspect
  "(interpolation #{@before.inspect} #{@mid.inspect} #{@after.inspect})"
end

#to_quoted_equivalentSass::Script::Tree::Node

Returns an `unquote()` expression that will evaluate to the same value as this interpolation.



88
89
90
91
92
93
94
95
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 88

def to_quoted_equivalent
  Funcall.new(
    "unquote",
    [to_string_interpolation(self)],
    Sass::Util::NormalizedMap.new,
    nil,
    nil)
end

#to_sass(opts = {}) ⇒ Object

See Also:



70
71
72
73
74
75
76
77
78
79
80
81
82
# File '.ruby-sass/lib/sass/script/tree/interpolation.rb', line 70

def to_sass(opts = {})
  return to_quoted_equivalent.to_sass if deprecation == :immediate

  res = ""
  res << @before.to_sass(opts) if @before
  res << ' ' if @before && @whitespace_before
  res << '#{' unless @originally_text
  res << @mid.to_sass(opts)
  res << '}' unless @originally_text
  res << ' ' if @after && @whitespace_after
  res << @after.to_sass(opts) if @after
  res
end