class Sorbet::Eraser::Parser
A Ripper parser that will replace usage of Sorbet
patterns with whitespace so that location information is maintained but Sorbet
methods aren't called.
Attributes
line_counts[R]
patterns[R]
Public Class Methods
erase(source)
click to toggle source
# File lib/sorbet/eraser/parser.rb, line 84 def self.erase(source) parser = new(source) if parser.parse.nil? || parser.error? raise "Invalid source" else parser.patterns.inject(source) do |current, pattern| pattern.erase(current) end end end
new(source)
click to toggle source
Calls superclass method
# File lib/sorbet/eraser/parser.rb, line 65 def initialize(source) super(source) @line_counts = [] last_index = 0 source.lines.each do |line| if line.size == line.bytesize @line_counts << SingleByteString.new(last_index) else @line_counts << MultiByteString.new(last_index, line) end last_index += line.size end @patterns = [] end
Private Instance Methods
loc()
click to toggle source
# File lib/sorbet/eraser/parser.rb, line 98 def loc line_counts[lineno - 1][column] end