1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/reline/yamatanooroti/termination_checker.rb

30 lines
651 B
Ruby

require 'ripper'
require 'irb/ruby-lex'
class TerminationChecker < RubyLex
def terminated?(code)
code.gsub!(/\n*$/, '').concat("\n")
@tokens = Ripper.lex(code)
continue = process_continue
code_block_open = check_code_block(code)
indent = process_nesting_level
ltype = process_literal_type
if code_block_open or ltype or continue or indent > 0
false
else
true
end
end
end
class AutoIndent < RubyLex
def initialize
set_input(self)
context = Struct.new(:auto_indent_mode).new(true)
set_auto_indent(context)
end
def auto_indent(&block)
Reline.auto_indent_proc = block
end
end