-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfoo.rb
86 lines (74 loc) · 2.06 KB
/
foo.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# frozen_string_literal: true
require 'im-lost'
class Foo
def self.create(value:) = new(value)
attr_reader :value
def initialize(value)
@value = value
end
def foo(arg, *args, key: nil, **kw_args, &block)
@value = "#{arg}-#{key}-[#{args.join(',')}]-#{kw_args.inspect}-#{bar}"
block ? block.call(@value) : @value
end
def bar = :bar
end
ImLost.trace(Foo)
my_foo = Foo.create(value: :foo!)
ImLost.trace(my_foo)
my_foo.foo(1, key: :none)
ImLost.vars(my_foo)
my_foo.foo(2, :a, :b, :c, key: :some, name: :value)
ImLost.vars(my_foo)
my_foo.foo(3) { puts _1 }
ImLost.vars(my_foo)
# output will look like
# > Foo.create(:foo!)
# /examples/foo.rb:24
# > Foo.new(*)
# /examples/foo.rb:6
# < Foo.new(*)
# /examples/foo.rb:6
# = #<Foo:0x00000001006448c0 @value=:foo!>
# < Foo.create(:foo!)
# /examples/foo.rb:24
# = #<Foo:0x00000001006448c0 @value=:foo!>
# > Foo#foo(1, *[], :none, **{}, &nil)
# /examples/foo.rb:27
# > Foo#bar()
# /examples/foo.rb:15
# < Foo#bar()
# /examples/foo.rb:15
# = :bar
# < Foo#foo(1, *[], :none, **{}, &nil)
# /examples/foo.rb:27
# = "1-none-[]-{}-bar"
# * /examples/foo.rb:28
# > instance variables
# @value: "1-none-[]-{}-bar"
# > Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
# /examples/foo.rb:30
# > Foo#bar()
# /examples/foo.rb:15
# < Foo#bar()
# /examples/foo.rb:15
# = :bar
# < Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
# /examples/foo.rb:30
# = "2-some-[a,b,c]-{:name=>:value}-bar"
# * /examples/foo.rb:31
# > instance variables
# @value: "2-some-[a,b,c]-{:name=>:value}-bar"
# > Foo#foo(3, *[], nil, **{}, &#<Proc:0x0000000100641d28 /examples/foo.rb:33>)
# /examples/foo.rb:33
# > Foo#bar()
# /examples/foo.rb:15
# < Foo#bar()
# /examples/foo.rb:15
# = :bar
# 3--[]-{}-bar
# < Foo#foo(3, *[], nil, **{}, &#<Proc:0x0000000100641d28 /examples/foo.rb:33>)
# /examples/foo.rb:33
# = nil
# * /examples/foo.rb:34
# > instance variables
# @value: "3--[]-{}-bar"