im-lost 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5f3add8daa7364ab1a0f1a5058a09b529e448db9bfeda20c9f35e9e69fccbc90
4
- data.tar.gz: 8bfad384dc5dfd659bb5a49eda611e90b9ee090d0bfa5dfbfd9979289591bac8
3
+ metadata.gz: 8b3508c022462842507ce749828e2c74c4db9e9097496e68cedc758018017cb5
4
+ data.tar.gz: 93ac54d98ae6474d4f7144b116cf0e2784c88babf57ff592a317b463caa7ee13
5
5
  SHA512:
6
- metadata.gz: a2fa68b037ca862fc7754b9f613743e6c358aaf9ec2c299a3dc0b3fc8612ab9537696d21c2212e292530e258470db970f4e6bd2e724c38f1fea22f7b22af3376
7
- data.tar.gz: 6c47d670e625de3a386cf1412278bb5e6382e8b3809a7bb0678ee7f4ef99983cddfd805655198ad931bb735a336343837c3b4b4e9887ba7bc6dd0064dd168bfc
6
+ metadata.gz: 4d45f27c98a6ed477ce4e696f4c41286ca24c105de1668889bf64fc0d57d3947e04c026b40fa7f5f79e2ce5016fcc8327e3c9a8b20a1e6ae0561900efae4f5f3
7
+ data.tar.gz: 1502147a826924c39988f9272d62e3c0274dc8cdb961f25c405a229cf6273142579ad136af1972c06874d13af110486b79db45907c219bd3082a91cd507220ab
data/README.md CHANGED
@@ -20,14 +20,14 @@ File.open('test.txt', 'w') do |file|
20
20
  end
21
21
  end
22
22
  # output will look like
23
- # > IO#<<(?)
24
- # /projects/test.rb:1
25
- # > IO#write(*)
26
- # /projects/test.rb:1
27
- # > IO#puts(*)
28
- # /projects/test.rb:2
29
- # > IO#write(*)
30
- # /projects/test.rb:2
23
+ # > IO#<<(?)
24
+ # /projects/test.rb:1
25
+ # > IO#write(*)
26
+ # /projects/test.rb:1
27
+ # > IO#puts(*)
28
+ # /projects/test.rb:2
29
+ # > IO#write(*)
30
+ # /projects/test.rb:2
31
31
  ```
32
32
 
33
33
  When you need to know if exceptions are raised and handled you can use `ImLost.trace_exceptions`:
@@ -39,12 +39,12 @@ rescue SystemCallError
39
39
  raise('something went wrong!')
40
40
  end
41
41
  # output will look like
42
- # x Errno::EEXIST: File exists @ rb_sysopen - /
43
- # /projects/test.rb:2
44
- # ! Errno::EEXIST: File exists @ rb_sysopen - /
45
- # /projects/test.rb:3
46
- # x RuntimeError: something went wrong!
47
- # /projects/test.rb:4
42
+ # x Errno::EEXIST: File exists @ rb_sysopen - /
43
+ # /projects/test.rb:2
44
+ # ! Errno::EEXIST: File exists @ rb_sysopen - /
45
+ # /projects/test.rb:3
46
+ # x RuntimeError: something went wrong!
47
+ # /projects/test.rb:4
48
48
  ```
49
49
 
50
50
  When you like to know if and when a code point is reached, `ImLost.here` will help:
@@ -108,31 +108,48 @@ my_foo.foo(3) { puts _1 }
108
108
  ImLost.vars(my_foo)
109
109
 
110
110
  # output will look like
111
- # > Foo.create(:foo!)
112
- # /projects/foo.rb25
113
- # > Foo.new(*)
114
- # /projects/foo.rb6
115
- # < Foo.new(*)
116
- # = #<Foo:0x0000000100ab1188 @value=:foo!>
117
- # < Foo.create(:foo!)
118
- # = #<Foo:0x0000000100ab1188 @value=:foo!>
119
- # > Foo#foo(1, *[], :none, **{}, &nil)
120
- # /projects/foo.rb28
121
- # > Foo#bar()
122
- # /projects/foo.rb15
123
- # < Foo#bar()
124
- # = :bar
125
- # < Foo#foo(1, *[], :none, **{}, &nil)
126
- # = "1-none-[]-{}-bar"
127
- # = /projects/foo.rb29
128
- # instance variables:
129
- # @value: "1-none-[]-{}-bar"
130
- # = /projects/foo.rb32
131
- # instance variables:
132
- # @value: "2-some-[a,b,c]-{:name=>:value}-bar"
133
- # = /projects/foo.rb35
134
- # instance variables:
135
- # @value: "3--[]-{}-bar"
111
+ # > Foo.create(:foo!)
112
+ # /projects/foo.rb:25
113
+ # > Foo.new(*)
114
+ # /projects/foo.rb:6
115
+ # < Foo.new(*)
116
+ # = #<Foo:0x00000001030810c0 @value=:foo!>
117
+ # < Foo.create(:foo!)
118
+ # = #<Foo:0x00000001030810c0 @value=:foo!>
119
+ # > Foo#foo(1, *[], :none, **{}, &nil)
120
+ # /projects/foo.rb:28
121
+ # > Foo#bar()
122
+ # /projects/foo.rb:15
123
+ # < Foo#bar()
124
+ # = :bar
125
+ # < Foo#foo(1, *[], :none, **{}, &nil)
126
+ # = "1-none-[]-{}-bar"
127
+ # = /projects/foo.rb:29
128
+ # instance variables:
129
+ # @value: "1-none-[]-{}-bar"
130
+ # > Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
131
+ # /projects/foo.rb:31
132
+ # > Foo#bar()
133
+ # /projects/foo.rb:15
134
+ # < Foo#bar()
135
+ # = :bar
136
+ # < Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
137
+ # = "2-some-[a,b,c]-{:name=>:value}-bar"
138
+ # = /projects/foo.rb:32
139
+ # instance variables:
140
+ # @value: "2-some-[a,b,c]-{:name=>:value}-bar"
141
+ # > Foo#foo(3, *[], nil, **{}, &#<Proc:0x00000001030aee30 /projects/foo.rb:34>)
142
+ # /projects/foo.rb:34
143
+ # > Foo#bar()
144
+ # /projects/foo.rb:15
145
+ # < Foo#bar()
146
+ # = :bar
147
+ # 3--[]-{}-bar
148
+ # < Foo#foo(3, *[], nil, **{}, &#<Proc:0x00000001030aee30 /projects/foo.rb:34>)
149
+ # = nil
150
+ # = /projects/foo.rb:35
151
+ # instance variables:
152
+ # @value: "3--[]-{}-bar"
136
153
  ```
137
154
 
138
155
  See [examples dir](./examples) for more…
data/examples/foo.rb CHANGED
@@ -35,28 +35,45 @@ my_foo.foo(3) { puts _1 }
35
35
  ImLost.vars(my_foo)
36
36
 
37
37
  # output will look like
38
- # > Foo.create(:foo!)
39
- # /projects/foo.rb25
40
- # > Foo.new(*)
41
- # /projects/foo.rb6
42
- # < Foo.new(*)
43
- # = #<Foo:0x0000000100ab1188 @value=:foo!>
44
- # < Foo.create(:foo!)
45
- # = #<Foo:0x0000000100ab1188 @value=:foo!>
46
- # > Foo#foo(1, *[], :none, **{}, &nil)
47
- # /projects/foo.rb28
48
- # > Foo#bar()
49
- # /projects/foo.rb15
50
- # < Foo#bar()
51
- # = :bar
52
- # < Foo#foo(1, *[], :none, **{}, &nil)
53
- # = "1-none-[]-{}-bar"
54
- # = /projects/foo.rb29
55
- # instance variables:
56
- # @value: "1-none-[]-{}-bar"
57
- # = /projects/foo.rb32
58
- # instance variables:
59
- # @value: "2-some-[a,b,c]-{:name=>:value}-bar"
60
- # = /projects/foo.rb35
61
- # instance variables:
62
- # @value: "3--[]-{}-bar"
38
+ # > Foo.create(:foo!)
39
+ # /projects/foo.rb:25
40
+ # > Foo.new(*)
41
+ # /projects/foo.rb:6
42
+ # < Foo.new(*)
43
+ # = #<Foo:0x00000001030810c0 @value=:foo!>
44
+ # < Foo.create(:foo!)
45
+ # = #<Foo:0x00000001030810c0 @value=:foo!>
46
+ # > Foo#foo(1, *[], :none, **{}, &nil)
47
+ # /projects/foo.rb:28
48
+ # > Foo#bar()
49
+ # /projects/foo.rb:15
50
+ # < Foo#bar()
51
+ # = :bar
52
+ # < Foo#foo(1, *[], :none, **{}, &nil)
53
+ # = "1-none-[]-{}-bar"
54
+ # = /projects/foo.rb:29
55
+ # instance variables:
56
+ # @value: "1-none-[]-{}-bar"
57
+ # > Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
58
+ # /projects/foo.rb:31
59
+ # > Foo#bar()
60
+ # /projects/foo.rb:15
61
+ # < Foo#bar()
62
+ # = :bar
63
+ # < Foo#foo(2, *[:a, :b, :c], :some, **{:name=>:value}, &nil)
64
+ # = "2-some-[a,b,c]-{:name=>:value}-bar"
65
+ # = /projects/foo.rb:32
66
+ # instance variables:
67
+ # @value: "2-some-[a,b,c]-{:name=>:value}-bar"
68
+ # > Foo#foo(3, *[], nil, **{}, &#<Proc:0x00000001030aee30 /projects/foo.rb:34>)
69
+ # /projects/foo.rb:34
70
+ # > Foo#bar()
71
+ # /projects/foo.rb:15
72
+ # < Foo#bar()
73
+ # = :bar
74
+ # 3--[]-{}-bar
75
+ # < Foo#foo(3, *[], nil, **{}, &#<Proc:0x00000001030aee30 /projects/foo.rb:34>)
76
+ # = nil
77
+ # = /projects/foo.rb:35
78
+ # instance variables:
79
+ # @value: "3--[]-{}-bar"
@@ -2,5 +2,5 @@
2
2
 
3
3
  module ImLost
4
4
  # The version number of the gem.
5
- VERSION = '1.0.1'
5
+ VERSION = '1.0.2'
6
6
  end
data/lib/im-lost.rb CHANGED
@@ -254,7 +254,7 @@ module ImLost
254
254
  return unless object.respond_to?(:instance_variables)
255
255
  _vars(object, Kernel.caller_locations(1, 1)[0])
256
256
  ensure
257
- @trace[traced] = 1 if traced
257
+ @trace[traced] = traced if traced
258
258
  end
259
259
 
260
260
  protected
@@ -272,30 +272,35 @@ module ImLost
272
272
  private
273
273
 
274
274
  def _trace(arg)
275
- @trace[arg.__id__] = 1 if self != arg && @output != arg
275
+ id = arg.__id__
276
+ @trace[id] = id if __id__ != id && @output.__id__ != id
276
277
  arg
277
278
  end
278
279
 
279
280
  def _trace_all(args)
280
281
  args.each do |arg|
281
- @trace[arg.__id__] = 1 if arg != self && @output != arg
282
+ arg = arg.__id__
283
+ @trace[arg] = arg if __id__ != arg && @output.__id__ != arg
282
284
  end
283
285
  args
284
286
  end
285
287
 
286
288
  def _trace_b(arg)
287
- @trace[id = arg.__id__] = 1 if self != arg && @output != arg
288
- yield(arg)
289
- ensure
290
- @trace.delete(id) if id
289
+ id = arg.__id__
290
+ return yield(arg) if __id__ == id || @output.__id__ == id
291
+ begin
292
+ @trace[id] = id
293
+ yield(arg)
294
+ ensure
295
+ @trace.delete(id) if id
296
+ end
291
297
  end
292
298
 
293
299
  def _trace_all_b(args)
294
300
  ids =
295
301
  args.filter_map do |arg|
296
- next if self == arg || @output == arg
297
- @trace[id = arg.__id__] = 1
298
- id
302
+ arg = arg.__id__
303
+ @trace[arg] = arg if __id__ != arg && @output.__id__ != arg
299
304
  end
300
305
  yield(args)
301
306
  ensure
@@ -332,9 +337,8 @@ module ImLost
332
337
  end
333
338
 
334
339
  ARG_SIG = { rest: '*', keyrest: '**', block: '&' }.compare_by_identity.freeze
335
- NO_NAME = %i[* ** &].freeze
336
- EX_PREFIX = { raise: 'x', rescue: '!' }.freeze
337
- private_constant :ARG_SIG, :NO_NAME, :EX_PREFIX
340
+ NO_NAME = { :* => 1, :** => 1, :& => 1 }.compare_by_identity.freeze
341
+ private_constant :ARG_SIG, :NO_NAME
338
342
 
339
343
  @trace = {}.compare_by_identity
340
344
  @caller_locations = true
@@ -354,7 +358,7 @@ module ImLost
354
358
  '>',
355
359
  tp,
356
360
  tp.parameters.map do |kind, name|
357
- next name if NO_NAME.include?(name)
361
+ next name if NO_NAME.key?(name)
358
362
  "#{ARG_SIG[kind]}#{ctx.local_variable_get(name).inspect}"
359
363
  end
360
364
  )
@@ -392,7 +396,9 @@ module ImLost
392
396
  @trace_exceptions =
393
397
  TracePoint.new(*supported) do |tp|
394
398
  ex = tp.raised_exception.inspect
395
- @output.puts("#{EX_PREFIX[tp.event]} #{ex[0] == '#' ? ex[2..-2] : ex}")
399
+ @output.puts(
400
+ "#{tp.event == :raise ? 'x' : '!'} #{ex[0] == '#' ? ex[2..-2] : ex}"
401
+ )
396
402
  @output.puts(" #{tp.path}:#{tp.lineno}") if @exception_locations
397
403
  end
398
404
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: im-lost
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Blumtritt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-12 00:00:00.000000000 Z
11
+ date: 2024-05-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  If you have overlooked something again and don't really understand what
@@ -56,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  requirements: []
59
- rubygems_version: 3.2.33
59
+ rubygems_version: 3.5.10
60
60
  signing_key:
61
61
  specification_version: 4
62
62
  summary: Your debugging helper.