class StringLiteralExtractor
Public Class Methods
new(src, filename="(ripper)", lineno=1)
click to toggle source
Calls superclass method
# File string_literal_extractor.rb, line 44 def initialize(src, filename="(ripper)", lineno=1) @src = src super end
Public Instance Methods
each() { |literal, pos| ... }
click to toggle source
# File string_literal_extractor.rb, line 49 def each @string_literal_each = -> (literal, pos) { yield literal, pos } parse end
on_CHAR(literal)
click to toggle source
# File string_literal_extractor.rb, line 23 def on_CHAR(literal) @string_literal_each.call(literal, [[lineno, column], [lineno, column + 1]]) end
on_heredoc_end(tok)
click to toggle source
# File string_literal_extractor.rb, line 19 def on_heredoc_end(tok) @buf.last << [lineno, column + tok.size-1] end
on_string_literal(*args)
click to toggle source
# File string_literal_extractor.rb, line 27 def on_string_literal(*args) pos = @buf.pop lineno_pos = pos.map(&:first) column_pos = pos.map(&:last) lines = @src.lines[lineno_pos.first-1...lineno_pos.last] if lineno_pos.first == lineno_pos.last lines[0] = lines[0][column_pos.first..column_pos.last] else lines[0] = lines[0].dup.tap { |l| l[0...column_pos.first] = '' } lines[-1] = lines[-1].dup.tap { |l| l[column_pos.last+1..-1] = '' } end @string_literal_each.call(lines.join, pos) args.unshift(:string_literal) args end
on_tstring_end(tok)
click to toggle source
# File string_literal_extractor.rb, line 15 def on_tstring_end(tok) @buf.last << [lineno, column] end