class ComponentEmbeddedRuby::Lexer::StringReader
Attributes
can_interpolate[R]
input_reader[R]
quote_type[R]
Public Class Methods
new(input_reader, quote_type:, can_interpolate:)
click to toggle source
# File lib/component_embedded_ruby/lexer/string_reader.rb, line 6 def initialize(input_reader, quote_type:, can_interpolate:) @input_reader = input_reader @quote_type = quote_type @can_interpolate = can_interpolate end
Public Instance Methods
read_until_closing_quote()
click to toggle source
# File lib/component_embedded_ruby/lexer/string_reader.rb, line 12 def read_until_closing_quote string = "" previous_char = nil current_char = input_reader.current_char loop do input_reader.next previous_char = current_char current_char = input_reader.current_char string += current_char break if current_char == quote_type && string[-1] != "\\" if can_interpolate && string[-2..-1] == '#{' && string[-3] != "\\" string += RubyCodeReader.new(input_reader).read_until_closing_tag string += "}" end end string end