diff options
author | Schneems <[email protected]> | 2023-12-04 15:23:41 -0600 |
---|---|---|
committer | git <[email protected]> | 2023-12-05 17:51:28 +0000 |
commit | 62c96959114ea165f7434da9edc42d15e4aaebfa () | |
tree | 6bb150da5f217babb4a0dd5d1e54def300b140a9 /lib/syntax_suggest | |
parent | cce29750d797a85ac89540b9ad47816131652a2f (diff) |
[ruby/syntax_suggest] Support lexing with Prism
https://.com/ruby/syntax_suggest/commit/7f4176a914
-rw-r--r-- | lib/syntax_suggest/api.rb | 24 | ||||
-rw-r--r-- | lib/syntax_suggest/code_line.rb | 17 | ||||
-rw-r--r-- | lib/syntax_suggest/lex_all.rb | 5 |
3 files changed, 27 insertions, 19 deletions
@@ -5,23 +5,27 @@ require_relative "version" require "tmpdir" require "stringio" require "pathname" -# rubocop:disable Style/IdenticalConditionalBranches -if ENV["SYNTAX_SUGGEST_DISABLE_PRISM"] # For testing dual ripper/prism support - require "ripper" else - # TODO remove require - # Allow both to be loaded to enable more atomic commits - require "ripper" begin require "prism" rescue LoadError - require "ripper" end end -# rubocop:enable Style/IdenticalConditionalBranches - -require "timeout" module SyntaxSuggest # Used to indicate a default value that cannot @@ -180,12 +180,19 @@ module SyntaxSuggest # EOM # expect(lines.first.trailing_slash?).to eq(true) # - def trailing_slash? - last = @lex.last - return false unless last - return false unless last.type == :on_sp - last.token == TRAILING_SLASH end # Endless method detection @@ -32,18 +32,15 @@ module SyntaxSuggest } end - # rubocop:disable Style/IdenticalConditionalBranches if SyntaxSuggest.use_prism_parser? def self.lex(source, line_number) - # Prism.lex_compat(source, line: line_number).value.sort_by {|values| values[0] } - Ripper::Lexer.new(source, "-", line_number).parse.sort_by(&:pos) end else def self.lex(source, line_number) Ripper::Lexer.new(source, "-", line_number).parse.sort_by(&:pos) end end - # rubocop:enable Style/IdenticalConditionalBranches def to_a @lex |