Method: Sass::Script::Tree::Interpolation#to_string_interpolation

Defined in:
lib/sass/script/tree/interpolation.rb

#to_string_interpolation(node_or_interp) ⇒ Sass::Script::Tree::StringInterpolation (protected)

Converts a script node into a corresponding string interpolation expression.

Parameters:

Returns:



119
120
121
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
# File 'lib/sass/script/tree/interpolation.rb', line 119

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