instance method
find_offset
Ruby on Rails 7.1.6
Since v7.1.6 PrivateSignature
find_offset(compiled, source_tokens, error_column)
No documentation comment.
Parameters
-
compiledreq -
source_tokensreq -
error_columnreq
Source
# File actionview/lib/action_view/template/handlers/erb.rb, line 108
def find_offset(compiled, source_tokens, error_column)
compiled = StringScanner.new(compiled)
passed_tokens = []
while tok = source_tokens.shift
tok_name, str = *tok
case tok_name
when :TEXT
loop do
break if compiled.match?(str)
compiled.getch
end
raise LocationParsingError unless compiled.scan(str)
when :CODE
if compiled.pos > error_column
raise LocationParsingError, "We went too far"
end
if compiled.pos + str.bytesize >= error_column
offset = error_column - compiled.pos
return passed_tokens.map(&:last).join.bytesize + offset
else
unless compiled.scan(str)
raise LocationParsingError, "Couldn't find code snippet"
end
end
when :OPEN
next_tok = source_tokens.first.last
loop do
break if compiled.match?(next_tok)
compiled.getch
end
when :CLOSE
next_tok = source_tokens.first.last
loop do
break if compiled.match?(next_tok)
compiled.getch
end
else
raise LocationParsingError, "Not implemented: #{tok.first}"
end
passed_tokens << tok
end
end
Defined in actionview/lib/action_view/template/handlers/erb.rb line 108
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Template::Handlers::ERB