summaryrefslogtreecommitdiff
path: root/test/reline/yamatanooroti/termination_checker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/reline/yamatanooroti/termination_checker.rb')
-rw-r--r--test/reline/yamatanooroti/termination_checker.rb30
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