diff options
Diffstat (limited to 'test/reline/yamatanooroti/termination_checker.rb')
-rw-r--r-- | test/reline/yamatanooroti/termination_checker.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/reline/yamatanooroti/termination_checker.rb b/test/reline/yamatanooroti/termination_checker.rb new file mode 100644 index 0000000000..a36e075bde --- /dev/null +++ b/test/reline/yamatanooroti/termination_checker.rb @@ -0,0 +1,30 @@ +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 |