lib/rib/api.rb in rib-1.4.0 vs lib/rib/api.rb in rib-1.5.0
- old
+ new
@@ -21,14 +21,10 @@
def name ; config[:name] ; end
# The binding for evaluation
def eval_binding ; config[:binding] ; end
# The line number for next evaluation
def line ; config[:line] ; end
- # The object for the current binding
- def bound_object
- config[:bound_object] ||= eval_binding.eval('self', __FILE__, __LINE__)
- end
# Main loop
def in_loop
input = catch(:rib_exit){ loop_once while true }
puts if input == nil
@@ -72,11 +68,15 @@
config[:line] += 1
end
# Evaluate user input with #eval_binding, name and line
def loop_eval input
- eval_binding.eval(input, "(#{name})", line)
+ if eval_binding.kind_of?(Binding)
+ eval_binding.eval(input, "(#{name})", line)
+ else
+ eval_binding.instance_eval(input, "(#{name})", line)
+ end
end
# Print result using #format_result
def print_result result
puts(format_result(result))
@@ -89,10 +89,14 @@
puts(format_error(err))
rescue StandardError, SyntaxError => e
Rib.warn("Error while printing error:\n #{format_error(e)}")
end
+ def puts str
+ super
+ end
+
# Format result using #result_prompt
def format_result result
result_prompt + result.inspect
end
@@ -103,12 +107,16 @@
end
module_function :format_error
# Get error message and backtrace from a particular error
def get_error err
- ["#{err.class}: #{err.message}", err.backtrace]
+ ["#{err.class}: #{err.message}", format_backtrace(err.backtrace)]
end
module_function :get_error
+
+ def format_backtrace backtrace
+ backtrace
+ end
private
def equal_rib_skip result
result == Rib::Skip
rescue