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