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