commit 53e40e98651af72553ef171816953db23af6abf3 Author: John Mair Date: Tue Dec 7 21:11:35 2010 +1300 first commit diff --git a/lib/pry.rb b/lib/pry.rb new file mode 100644 index 00000000..77e003de --- /dev/null +++ b/lib/pry.rb @@ -0,0 +1,42 @@ +require 'rubygems' +require 'readline' +require 'ruby_parser' + +class RubyParser + def self.valid?(code) + new.parse(code) + rescue Racc::ParseError + false + else + true + end +end + +def pry(target) + eval_string = "" + while true + prompt = "" + if eval_string.empty? + prompt = "> " + else + prompt = "* " + end + + val = Readline.readline(prompt, true) + eval_string += val + + if val == "!" + eval_string = "" + puts "refreshing REPL state" + break + end + + exit if val == "quit" + break if RubyParser.valid?(eval_string) + end + begin + puts "=> #{target.instance_eval(eval_string).inspect}" + rescue StandardError => e + puts "#{e.message}" + end +end diff --git a/lib/target.rb b/lib/target.rb new file mode 100644 index 00000000..a662df23 --- /dev/null +++ b/lib/target.rb @@ -0,0 +1,16 @@ +require './pry' + +o = Object.new +class << o + def pig; + puts "pig!!!" + end + + def horse? + puts "HORSEY LOL" + end +end + +5.times { + pry(o) +}