module Rib::Multiline

Constants

BINARY_OP

test those: ruby -e '“' ruby -e '{' ruby -e '[' ruby -e '(' ruby -e '/' ruby -e 'class C' ruby -e 'def f' ruby -e 'begin' ruby -e 'eval ”1+1.to_i +“' ruby -e 'eval ”1+1.to_i -“' ruby -e 'eval ”1+1.to_i *“' ruby -e 'eval ”1+1.to_i /“' ruby -e 'eval ”1+1.to_i &“' ruby -e 'eval ”1+1.to_i |“' ruby -e 'eval ”1+1.to_i ^“'

ERROR_REGEXP
RUBY20_IO

Public Instance Methods

handle_interrupt() click to toggle source
Calls superclass method
# File lib/rib/core/multiline.rb, line 112
def handle_interrupt
  return super if Multiline.disabled?
  if multiline_buffer.empty?
    super
  else
    print "[removed this line: #{multiline_buffer.pop}]"
    super
    throw :rib_multiline
  end
end
loop_eval(input) click to toggle source
Calls superclass method
# File lib/rib/core/multiline.rb, line 83
def loop_eval input
  return super if Multiline.disabled?
  multiline_buffer << input
  if input =~ /\\\z/
    throw :rib_multiline
  else
    super(multiline_buffer.join("\n"))
  end
end
loop_once() click to toggle source

————— Rib API —————

Calls superclass method
# File lib/rib/core/multiline.rb, line 73
def loop_once
  return super if Multiline.disabled?
  result = nil
  catch(:rib_multiline) do
    result = super
    multiline_buffer.clear
  end
  result
end
multiline?(err) click to toggle source

————— Plugin API —————

# File lib/rib/core/multiline.rb, line 125
def multiline? err
  err.is_a?(SyntaxError) && err.message =~ ERROR_REGEXP
end
multiline_prompt() click to toggle source
# File lib/rib/core/multiline.rb, line 129
def multiline_prompt
  config[:multiline_prompt] ||= '| '
end
print_eval_error(err) click to toggle source
Calls superclass method
prompt() click to toggle source
Calls superclass method
# File lib/rib/core/multiline.rb, line 102
def prompt
  return super if Multiline.disabled?
  if multiline_buffer.empty?
    super
  else
    mprompt = multiline_prompt[0, config[:prompt].size]
    "#{' '*(config[:prompt].size-mprompt.size)}#{mprompt}"
  end
end

Private Instance Methods

multiline_buffer() click to toggle source
# File lib/rib/core/multiline.rb, line 135
def multiline_buffer
  @multiline_buffer ||= []
end