Converts a SyntaxError
message to a path
Handles the case where the filename has a colon in it such as on a windows file system: github.com/ruby/syntax_suggest/issues/111
Example:
message = "/tmp/scratch:2:in `require_relative': /private/tmp/bad.rb:1: syntax error, unexpected `end' (SyntaxError)" puts PathnameFromMessage.new(message).call.name # => "/tmp/scratch.rb"
Constants
No documentation available
No documentation available
Attributes
Read
No documentation available
Class Methods
lib/syntax_suggest/pathname_from_message.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/pathname_from_message.rb, line 20
def initialize(message, io: $stderr)
@line = message.lines.first
@parts = @line.split(":")
@guess = []
@name = nil
@io = io
end
No documentation available
Instance Methods
#
lib/syntax_suggest/pathname_from_message.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/pathname_from_message.rb, line 28
def call
if skip_missing_file_name?
if ENV["SYNTAX_SUGGEST_DEBUG"]
@io.puts "SyntaxSuggest: Could not find filename from #{@line.inspect}"
end
else
until stop?
@guess << @parts.shift
@name = Pathname(@guess.join(":"))
end
if @parts.empty?
@io.puts "SyntaxSuggest: Could not find filename from #{@line.inspect}"
@name = nil
end
end
self
end
No documentation available
lib/syntax_suggest/pathname_from_message.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/pathname_from_message.rb, line 55
def skip_missing_file_name?
@line.match?(EVAL_RE) || @line.match?(STREAMING_RE)
end
No documentation available
#
lib/syntax_suggest/pathname_from_message.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/syntax_suggest/pathname_from_message.rb, line 48
def stop?
return true if @parts.empty?
return false if @guess.empty?
@name&.exist?
end
No documentation available