Sha256: 7145a9765a4e1392af4f7347c7daec1206ede11c495312cdde46efda44d69d27
Contents?: true
Size: 1.29 KB
Versions: 2
Compression:
Stored size: 1.29 KB
Contents
require 'stringio' # fix sequence bug, I think require 'redparse' # takes forever on doze [ltodo] class Object def display *args a = caller last_caller = a[0] if last_caller[1..1] == ":" # could be like E:/dev/ruby/sane/spec/../lib/sane/require_relative.rb:9:in `require_relative' drive, file, line, *rest = last_caller.split(":") else # or like # "spec.analyze:9" file, line, *rest = last_caller.split(":") end if(file.include?('eval')) out = '[eval] ' names = args.map{|a| '?'} else exact_line = File.readlines(file)[line.to_i - 1].strip parser = RedParse.new(exact_line) tree = parser.parse # the trick is to break out with the first method call... right_call_node = give_me_first_call_node tree names = right_call_node.params.map{|p| p.unparse} out = "[#{File.basename(file)},#{line}] " end args2 = names.map{ |n| "#{n}=#{args.shift.inspect}" }.join(', ') out += args2 puts out out end def give_me_first_call_node tree tree.walk{|parent,i,subi,node| if node.class == RedParse::CallNode # eureka return tree else return give_me_first_call_node(node.right) end } end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
show-0.2.1 | lib/analyze.rb |
display-0.2.1 | lib/display.rb |