Class: Sass::Script::Tree::Interpolation
- Inherits:
- Node
- Object
- Node
- Sass::Script::Tree::Interpolation
- Defined in:
- /Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb
Overview
A SassScript object representing #{}
interpolation outside a string.
Instance Attribute Summary (collapse)
- - (Node) after readonly
The SassScript after the interpolation.
- - (Node) before readonly
The SassScript before the interpolation.
- - (Symbol) deprecation readonly
The type of interpolation deprecation for this node.
- - (Node) mid readonly
The SassScript within the interpolation.
- - (Boolean) originally_text readonly
Whether the original format of the interpolation was plain text, not an interpolation.
- - (Boolean) warn_for_color readonly
Whether a color value passed to the interpolation should generate a warning.
- - (Boolean) whitespace_after readonly
Whether there was whitespace between
}
andafter
. - - (Boolean) whitespace_before readonly
Whether there was whitespace between
before
and#{
.
Attributes inherited from Node
#css_variable_warning, #filename, #line, #options, #source_range
Instance Method Summary (collapse)
- - (Array<Node>) children
Returns the three components of the interpolation,
before
,mid
, andafter
. - - deep_copy
- - (Interpolation) initialize(before, mid, after, wb, wa, opts = {}) constructor
Interpolation in a property is of the form
before #{mid} after
. - - (String) inspect
A human-readable s-expression representation of the interpolation.
- - (Sass::Script::Tree::Node) to_quoted_equivalent
Returns an
unquote()
expression that will evaluate to the same value as this interpolation. - - to_sass(opts = {})
- - (Sass::Script::Tree::StringInterpolation) to_string_interpolation(node_or_interp) protected
Converts a script node into a corresponding string interpolation expression.
Methods inherited from Node
#dasherize, #force_division!, #opts, #perform
Constructor Details
- (Interpolation) initialize(before, mid, after, wb, wa, opts = {})
Interpolation in a property is of the form before #{mid} after
.
52 53 54 55 56 57 58 59 60 61 62 | # File '/Users/ceppstei/Projects/sass-lang/.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
- (Node) after (readonly)
Returns The SassScript after the interpolation
13 14 15 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 13
def after
@after
end |
- (Node) before (readonly)
Returns The SassScript before the interpolation
7 8 9 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 7
def before
@before
end |
- (Symbol) deprecation (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.
39 40 41 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 39
def deprecation
@deprecation
end |
- (Node) mid (readonly)
Returns The SassScript within the interpolation
10 11 12 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 10
def mid
@mid
end |
- (Boolean) originally_text (readonly)
Returns 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 '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 24
def originally_text
@originally_text
end |
- (Boolean) warn_for_color (readonly)
Returns Whether a color value passed to the interpolation should generate a warning.
28 29 30 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 28
def warn_for_color
@warn_for_color
end |
- (Boolean) whitespace_after (readonly)
Returns Whether there was whitespace between }
and after
19 20 21 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 19
def whitespace_after
@whitespace_after
end |
- (Boolean) whitespace_before (readonly)
Returns Whether there was whitespace between before
and #{
16 17 18 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 16
def whitespace_before
@whitespace_before
end |
Instance Method Details
- (Array<Node>) children
Returns the three components of the interpolation, before
, mid
, and after
.
102 103 104 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 102
def children
[@before, @mid, @after].compact
end |
- deep_copy
107 108 109 110 111 112 113 | # File '/Users/ceppstei/Projects/sass-lang/.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 |
- (String) inspect
Returns A human-readable s-expression representation of the interpolation
65 66 67 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 65
def inspect
"(interpolation #{@before.inspect} #{@mid.inspect} #{@after.inspect})"
end |
- (Sass::Script::Tree::Node) to_quoted_equivalent
Returns an unquote()
expression that will evaluate to the same value as this interpolation.
88 89 90 91 92 93 94 95 | # File '/Users/ceppstei/Projects/sass-lang/.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 = {})
70 71 72 73 74 75 76 77 78 79 80 81 82 | # File '/Users/ceppstei/Projects/sass-lang/.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 |
- (Sass::Script::Tree::StringInterpolation) to_string_interpolation(node_or_interp) (protected)
Converts a script node into a corresponding string interpolation expression.
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | # File '/Users/ceppstei/Projects/sass-lang/.sass/lib/sass/script/tree/interpolation.rb', line 122
def to_string_interpolation(node_or_interp)
unless node_or_interp.is_a?(Interpolation)
node = node_or_interp
return string_literal(node.value.to_s) if node.is_a?(Literal)
if node.is_a?(StringInterpolation)
return concat(string_literal(node.quote), concat(node, string_literal(node.quote)))
end
return StringInterpolation.new(string_literal(""), node, string_literal(""))
end
interp = node_or_interp
after_string_or_interp =
if interp.after
to_string_interpolation(interp.after)
else
string_literal("")
end
if interp.after && interp.whitespace_after
after_string_or_interp = concat(string_literal(' '), after_string_or_interp)
end
mid_string_or_interp = to_string_interpolation(interp.mid)
before_string_or_interp =
if interp.before
to_string_interpolation(interp.before)
else
string_literal("")
end
if interp.before && interp.whitespace_before
before_string_or_interp = concat(before_string_or_interp, string_literal(' '))
end
concat(before_string_or_interp, concat(mid_string_or_interp, after_string_or_interp))
end |