summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSchneems <[email protected]>2023-12-04 16:59:10 -0600
committergit <[email protected]>2023-12-05 17:51:29 +0000
commit6d39d6d2143f7b910f310de0ff92772839ac72a2 ()
tree7b2071ab9e74334b2a18c05068b3e8a81938c692 /lib
parent62c96959114ea165f7434da9edc42d15e4aaebfa (diff)
[ruby/syntax_suggest] Update docs, clean up PR
Removes or updates mentions of Ripper https://.com/ruby/syntax_suggest/commit/08aaa3f50a
-rw-r--r--lib/syntax_suggest/api.rb3
-rw-r--r--lib/syntax_suggest/clean_document.rb4
-rw-r--r--lib/syntax_suggest/code_block.rb2
-rw-r--r--lib/syntax_suggest/explain_syntax.rb10
-rw-r--r--lib/syntax_suggest/lex_all.rb16
-rw-r--r--lib/syntax_suggest/ripper_errors.rb5
6 files changed, 26 insertions, 14 deletions
@@ -227,9 +227,6 @@ require_relative "lex_all"
require_relative "code_line"
require_relative "code_block"
require_relative "block_expand"
-if !SyntaxSuggest.use_prism_parser?
- require_relative "ripper_errors"
-end
require_relative "priority_queue"
require_relative "unvisited_lines"
require_relative "around_block_scan"
@@ -47,9 +47,9 @@ module SyntaxSuggest
# ## Heredocs
#
# A heredoc is an way of defining a multi-line string. They can cause many
- # problems. If left as a single line, Ripper would try to parse the contents
# as ruby code rather than as a string. Even without this problem, we still
- # hit an issue with indentation
#
# 1 foo = <<~HEREDOC
# 2 "Be yourself; everyone else is already taken.""
@@ -81,7 +81,7 @@ module SyntaxSuggest
# lines then the result cannot be invalid
#
# That means there's no reason to re-check all
- # lines with ripper (which is expensive).
# Benchmark in commit message
@valid = if lines.all? { |l| l.hidden? || l.empty? }
true
@@ -2,6 +2,10 @@
require_relative "left_right_lex_count"
module SyntaxSuggest
class GetParseErrors
def self.errors(source)
@@ -25,8 +29,8 @@ module SyntaxSuggest
# # => "Unmatched keyword, missing `end' ?"
#
# When the error cannot be determined by lexical counting
- # then ripper is run against the input and the raw ripper
- # errors returned.
#
# Example:
#
@@ -101,7 +105,7 @@ module SyntaxSuggest
# Returns an array of syntax error messages
#
# If no missing pairs are found it falls back
- # on the original ripper error messages
def errors
if missing.empty?
return GetParseErrors.errors(@code_lines.map(&:original).join)
@@ -3,10 +3,18 @@
module SyntaxSuggest
# Ripper.lex is not guaranteed to lex the entire source document
#
- # lex = LexAll.new(source: source)
- # lex.each do |value|
- # puts value.line
- # end
class LexAll
include Enumerable
@@ -1,7 +1,10 @@
# frozen_string_literal: true
module SyntaxSuggest
- # Capture parse errors from ripper
#
# Example:
#