debug_helper 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +164 -31
  4. data/lib/debug_helper.rb +74 -33
  5. data/lib/debug_helper/version.rb +1 -1
  6. data/markdown/readme/Rakefile +8 -2
  7. data/markdown/readme/classes/array/mixed/show.md +8 -3
  8. data/markdown/readme/classes/array/mixed/show.yaml +8 -3
  9. data/markdown/readme/classes/hash/circular/show.md +6 -2
  10. data/markdown/readme/classes/hash/circular/show.yaml +6 -2
  11. data/markdown/readme/classes/hash/mixed/show.md +17 -6
  12. data/markdown/readme/classes/hash/mixed/show.yaml +17 -6
  13. data/markdown/readme/classes/hash/nested/show.md +18 -6
  14. data/markdown/readme/classes/hash/nested/show.yaml +18 -6
  15. data/markdown/readme/classes/hash/simple/show.md +9 -3
  16. data/markdown/readme/classes/hash/simple/show.yaml +9 -3
  17. data/markdown/readme/classes/object/datetime/show.md +1 -1
  18. data/markdown/readme/classes/object/datetime/show.yaml +1 -1
  19. data/markdown/readme/classes/string/multiline/show.md +7 -4
  20. data/markdown/readme/classes/string/multiline/show.yaml +7 -4
  21. data/markdown/readme/classes/string/simple/show.md +5 -2
  22. data/markdown/readme/classes/string/simple/show.yaml +5 -2
  23. data/markdown/readme/classes/struct/mixed/show.md +8 -3
  24. data/markdown/readme/classes/struct/mixed/show.yaml +8 -3
  25. data/markdown/readme/classes/symbol/simple/show.md +3 -1
  26. data/markdown/readme/classes/symbol/simple/show.yaml +3 -1
  27. data/markdown/readme/options/depth/show.md +77 -0
  28. data/markdown/readme/options/depth/show.rb +15 -0
  29. data/markdown/readme/options/depth/show.yaml +49 -0
  30. data/markdown/readme/options/depth/template.md +9 -0
  31. data/markdown/readme/template.md +6 -0
  32. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcb726c44604dca3873eee267d8b1232bc55f637
4
- data.tar.gz: 5072c0c19bdc5729bf0134a65b5f5df894a688d4
3
+ metadata.gz: 406088664ae54129aca926d0cf20499386614ecf
4
+ data.tar.gz: d035993096295a1cec96701c0093c2f6486cfb17
5
5
  SHA512:
6
- metadata.gz: e2fb59ddebe2f696de7728f28e9ec74b71f93baece609ee7d12783fd69c1ae7fad56bec37dd706d0032457b7cfe9e1bcef5022ac512e074baf8a9747c1d14806
7
- data.tar.gz: c7241f9cfccef40479196a8c7c4def698ecef721adfd0157e086449ebada8ca60906d7e820cce4137809a35cd8c35d033974217275b3a3d157c51102e5e4ad36
6
+ metadata.gz: f1b4f3182d07acc36dacec517f6f919b99b2011efe909591a5d8ac81197c78540622fb9f8bf4ed85d7cf3cfccf6e57ce1f61deb2b67c7ac70246f1dd03e9fd6a
7
+ data.tar.gz: 9c2811314cf2210896b71530b0659ccd0180c4bbcce8fb98fb790f5c46154dab40a319a1c2f19115688a1a1677fe1f6f8ed25d02ae222661370efc1590235c12
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- debug_helper (1.5.0)
4
+ debug_helper (1.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -24,6 +24,8 @@ For certain classes (see below), the analysis is very detailed.
24
24
 
25
25
  For the collection classes ```Array```, ```Hash```, and ```Struct```, the analysis is also recursive; that is, the collection's values are themselves analyzed.
26
26
 
27
+ You can control the depth of recursion using option ```depth```. See [Options](#options).
28
+
27
29
  Classes treated in detail:
28
30
 
29
31
  - [Array](#array)
@@ -100,10 +102,15 @@ The output shows details of the array.
100
102
  Array (message='My mixed array' size=3):
101
103
  Element 0: Fixnum 0
102
104
  Element 1:
103
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
104
- - one
105
+ String (size=3):
106
+ to_s: one
107
+ encoding: !ruby/encoding UTF-8
108
+ ascii_only?: true
109
+ bytesize: 3
105
110
  Element 2:
106
- Symbol (size=3 encoding=US-ASCII): :two
111
+ Symbol (size=3):
112
+ to_s: two
113
+ encoding: !ruby/encoding US-ASCII
107
114
  ```
108
115
 
109
116
  #### Nested Arrays
@@ -184,15 +191,21 @@ The output shows details of the hash.
184
191
  Hash (size=3 message='My simple hash'):
185
192
  Pair 0:
186
193
  Key:
187
- Symbol (size=1 encoding=US-ASCII): :a
194
+ Symbol (size=1):
195
+ to_s: a
196
+ encoding: !ruby/encoding US-ASCII
188
197
  Value: Fixnum 0
189
198
  Pair 1:
190
199
  Key:
191
- Symbol (size=1 encoding=US-ASCII): :b
200
+ Symbol (size=1):
201
+ to_s: b
202
+ encoding: !ruby/encoding US-ASCII
192
203
  Value: Fixnum 1
193
204
  Pair 2:
194
205
  Key:
195
- Symbol (size=1 encoding=US-ASCII): :c
206
+ Symbol (size=1):
207
+ to_s: c
208
+ encoding: !ruby/encoding US-ASCII
196
209
  Value: Fixnum 2
197
210
  ```
198
211
 
@@ -220,19 +233,30 @@ The output shows details of the hash.
220
233
  Hash (size=3 message='My mixed hash'):
221
234
  Pair 0:
222
235
  Key:
223
- Symbol (size=1 encoding=US-ASCII): :a
236
+ Symbol (size=1):
237
+ to_s: a
238
+ encoding: !ruby/encoding US-ASCII
224
239
  Value: Fixnum 0
225
240
  Pair 1:
226
241
  Key:
227
- Symbol (size=1 encoding=US-ASCII): :b
242
+ Symbol (size=1):
243
+ to_s: b
244
+ encoding: !ruby/encoding US-ASCII
228
245
  Value:
229
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
230
- - one
246
+ String (size=3):
247
+ to_s: one
248
+ encoding: !ruby/encoding UTF-8
249
+ ascii_only?: true
250
+ bytesize: 3
231
251
  Pair 2:
232
252
  Key:
233
- Symbol (size=1 encoding=US-ASCII): :c
253
+ Symbol (size=1):
254
+ to_s: c
255
+ encoding: !ruby/encoding US-ASCII
234
256
  Value:
235
- Symbol (size=3 encoding=US-ASCII): :two
257
+ Symbol (size=3):
258
+ to_s: two
259
+ encoding: !ruby/encoding US-ASCII
236
260
  ```
237
261
 
238
262
  #### Nested Hashes
@@ -264,29 +288,41 @@ The output shows details of the hashes.
264
288
  Hash (size=2 message='My nested hash'):
265
289
  Pair 0:
266
290
  Key:
267
- Symbol (size=1 encoding=US-ASCII): :a
291
+ Symbol (size=1):
292
+ to_s: a
293
+ encoding: !ruby/encoding US-ASCII
268
294
  Value:
269
295
  Hash (size=2):
270
296
  Pair 0:
271
297
  Key:
272
- Symbol (size=1 encoding=US-ASCII): :b
298
+ Symbol (size=1):
299
+ to_s: b
300
+ encoding: !ruby/encoding US-ASCII
273
301
  Value: Fixnum 0
274
302
  Pair 1:
275
303
  Key:
276
- Symbol (size=1 encoding=US-ASCII): :c
304
+ Symbol (size=1):
305
+ to_s: c
306
+ encoding: !ruby/encoding US-ASCII
277
307
  Value: Fixnum 1
278
308
  Pair 1:
279
309
  Key:
280
- Symbol (size=1 encoding=US-ASCII): :d
310
+ Symbol (size=1):
311
+ to_s: d
312
+ encoding: !ruby/encoding US-ASCII
281
313
  Value:
282
314
  Hash (size=2):
283
315
  Pair 0:
284
316
  Key:
285
- Symbol (size=1 encoding=US-ASCII): :e
317
+ Symbol (size=1):
318
+ to_s: e
319
+ encoding: !ruby/encoding US-ASCII
286
320
  Value: Fixnum 2
287
321
  Pair 1:
288
322
  Key:
289
- Symbol (size=1 encoding=US-ASCII): :f
323
+ Symbol (size=1):
324
+ to_s: f
325
+ encoding: !ruby/encoding US-ASCII
290
326
  Value: Fixnum 3
291
327
  ```
292
328
 
@@ -315,12 +351,16 @@ The circular reference is not followed.
315
351
  Hash (size=1 message='My circular hashes'):
316
352
  Pair 0:
317
353
  Key:
318
- Symbol (size=3 encoding=US-ASCII): :foo
354
+ Symbol (size=3):
355
+ to_s: foo
356
+ encoding: !ruby/encoding US-ASCII
319
357
  Value:
320
358
  Hash (size=1):
321
359
  Pair 0:
322
360
  Key:
323
- Symbol (size=3 encoding=US-ASCII): :bar
361
+ Symbol (size=3):
362
+ to_s: bar
363
+ encoding: !ruby/encoding US-ASCII
324
364
  Value: Hash {:foo=>{:bar=>{...}}}
325
365
  ```
326
366
  ### Struct
@@ -380,12 +420,17 @@ MyStruct (message='My mixed struct' size=3):
380
420
  Member 1:
381
421
  Name: :b
382
422
  Value:
383
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
384
- - one
423
+ String (size=3):
424
+ to_s: one
425
+ encoding: !ruby/encoding UTF-8
426
+ ascii_only?: true
427
+ bytesize: 3
385
428
  Member 2:
386
429
  Name: :c
387
430
  Value:
388
- Symbol (size=3 encoding=US-ASCII): :two
431
+ Symbol (size=3):
432
+ to_s: two
433
+ encoding: !ruby/encoding US-ASCII
389
434
  ```
390
435
 
391
436
  #### Nested Structs
@@ -496,8 +541,11 @@ The output shows details of the string.
496
541
  ```show.yaml```:
497
542
  ```yaml
498
543
  ---
499
- String (message='My simple string' size=11 encoding=UTF-8 ascii_only=true bytesize=11):
500
- - Lorem ipsum
544
+ String (message='My simple string' size=11):
545
+ to_s: Lorem ipsum
546
+ encoding: !ruby/encoding UTF-8
547
+ ascii_only?: true
548
+ bytesize: 11
501
549
  ```
502
550
 
503
551
  #### Multiline String
@@ -520,10 +568,13 @@ The output shows details of the string.
520
568
  ```show.yaml```:
521
569
  ```yaml
522
570
  ---
523
- String (message='My multiline string' size=122 encoding=UTF-8 ascii_only=true bytesize=122):
524
- - |
525
- Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
526
- sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
571
+ String (message='My multiline string' size=122):
572
+ to_s: |
573
+ Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
574
+ sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
575
+ encoding: !ruby/encoding UTF-8
576
+ ascii_only?: true
577
+ bytesize: 122
527
578
  ```
528
579
  ### Symbol
529
580
 
@@ -543,7 +594,9 @@ The output shows details of the symbol.
543
594
  ```show.yaml```:
544
595
  ```yaml
545
596
  ---
546
- Symbol (message='My symbol' size=11 encoding=US-ASCII): :lorem_ipsum
597
+ Symbol (message='My symbol' size=11):
598
+ to_s: lorem_ipsum
599
+ encoding: !ruby/encoding US-ASCII
547
600
  ```
548
601
  ### Object
549
602
 
@@ -567,7 +620,7 @@ The output shows details of the datetime.
567
620
 
568
621
  ```show.yaml```:
569
622
  ```yaml
570
- --- DateTime (message='My datetime') 2018-07-04T14:49:11-05:00
623
+ --- DateTime (message='My datetime') 2018-07-13T09:59:53-05:00
571
624
  ...
572
625
  ```
573
626
 
@@ -610,3 +663,83 @@ The output shows details of the regexp.
610
663
  --- Regexp (message='My regexp') (?-mix:foo)
611
664
  ...
612
665
  ```
666
+
667
+ ## Options
668
+
669
+ ### Option ```depth```
670
+
671
+ This example shows how option ```depth``` affects output.
672
+
673
+ ```show.rb```:
674
+ ```ruby
675
+ require 'debug_helper'
676
+
677
+ ary = [0,
678
+ [1,
679
+ [2,
680
+ [3,
681
+ [4]
682
+ ]
683
+ ]
684
+ ]
685
+ ]
686
+ (1..5).each do |depth|
687
+ message = "Show depth #{depth}"
688
+ DebugHelper.show(ary, message, {:depth => depth})
689
+ end
690
+ ```
691
+
692
+ The output shows output for various depths.
693
+
694
+ ```show.yaml```:
695
+ ```yaml
696
+ ---
697
+ Array (message='Show depth 1' size=2):
698
+ Element 0: Fixnum 0
699
+ Element 1: Array [1, [2, [3, [4]]]]
700
+ ---
701
+ Array (message='Show depth 2' size=2):
702
+ Element 0: Fixnum 0
703
+ Element 1:
704
+ Array (size=2):
705
+ Element 0: Fixnum 1
706
+ Element 1: Array [2, [3, [4]]]
707
+ ---
708
+ Array (message='Show depth 3' size=2):
709
+ Element 0: Fixnum 0
710
+ Element 1:
711
+ Array (size=2):
712
+ Element 0: Fixnum 1
713
+ Element 1:
714
+ Array (size=2):
715
+ Element 0: Fixnum 2
716
+ Element 1: Array [3, [4]]
717
+ ---
718
+ Array (message='Show depth 4' size=2):
719
+ Element 0: Fixnum 0
720
+ Element 1:
721
+ Array (size=2):
722
+ Element 0: Fixnum 1
723
+ Element 1:
724
+ Array (size=2):
725
+ Element 0: Fixnum 2
726
+ Element 1:
727
+ Array (size=2):
728
+ Element 0: Fixnum 3
729
+ Element 1: Array [4]
730
+ ---
731
+ Array (message='Show depth 5' size=2):
732
+ Element 0: Fixnum 0
733
+ Element 1:
734
+ Array (size=2):
735
+ Element 0: Fixnum 1
736
+ Element 1:
737
+ Array (size=2):
738
+ Element 0: Fixnum 2
739
+ Element 1:
740
+ Array (size=2):
741
+ Element 0: Fixnum 3
742
+ Element 1:
743
+ Array (size=1):
744
+ Element 0: Fixnum 4
745
+ ```
data/lib/debug_helper.rb CHANGED
@@ -6,8 +6,8 @@ class DebugHelper
6
6
 
7
7
  module Putd
8
8
 
9
- def putd(obj, message)
10
- DebugHelper.show(obj, message)
9
+ def putd(obj, message, options = {})
10
+ DebugHelper.show(obj, message, options)
11
11
  end
12
12
 
13
13
  end
@@ -15,25 +15,29 @@ class DebugHelper
15
15
  attr_accessor \
16
16
  :obj,
17
17
  :message,
18
- :object_ids
18
+ :object_ids,
19
+ :depth
19
20
 
20
- def self.show(obj, message = obj.class)
21
- debug_helper = DebugHelper.new(obj, message)
21
+ def self.show(obj, message = obj.class, options = {})
22
+ debug_helper = DebugHelper.new(obj, message, options)
22
23
  x = debug_helper.send(:_show, obj, message, info = {})
23
24
  puts x.to_yaml
24
25
  end
25
26
 
26
27
  private
27
28
 
28
- def initialize(obj, message)
29
+ def initialize(obj, message, options)
29
30
  self.obj = obj
30
31
  self.message = message
32
+ self.depth = options[:depth] || 3
31
33
  self.object_ids = []
32
34
  end
33
35
 
34
36
  def _show(obj, message, info)
35
37
  if object_ids.include?(obj.object_id)
36
38
  s = show_object(obj, message, info)
39
+ elsif depth == object_ids.size
40
+ s = show_object(obj, message, info)
37
41
  else
38
42
  object_ids.push(obj.object_id)
39
43
  s = case
@@ -41,19 +45,15 @@ class DebugHelper
41
45
  show_array(obj, message, info)
42
46
  when obj.kind_of?(Hash)
43
47
  show_hash(obj, message, info)
44
- when obj.kind_of?(String)
45
- show_string(obj, message, info)
46
48
  when obj.kind_of?(Struct)
47
49
  show_struct(obj, message, info)
48
- when obj.kind_of?(Symbol)
49
- show_symbol(obj, message, info)
50
50
  # when obj.kind_of?(Range)
51
51
  # when obj.kind_of?(Set)
52
52
  else
53
53
  show_object(obj, message, info)
54
54
  end
55
+ object_ids.pop
55
56
  end
56
- object_ids.pop
57
57
  s
58
58
  end
59
59
 
@@ -86,19 +86,28 @@ class DebugHelper
86
86
  end
87
87
 
88
88
  def show_object(obj, message, info)
89
- message_info = message.nil? ? '' : " (message='#{message}')"
90
- "#{obj.class.name}#{message_info} #{obj}"
91
- end
92
-
93
- def show_string(obj, message, info)
94
- attrs = {
95
- :message => message,
96
- :size => obj.size,
97
- :encoding => obj.encoding,
98
- :ascii_only => obj.ascii_only?,
99
- :bytesize => obj.bytesize,
100
- }
101
- _show_item(obj.class.name, [obj], attrs, info)
89
+ methods = methods_for_object(obj)
90
+ if methods.nil?
91
+ message_info = message.nil? ? '' : " (message='#{message}')"
92
+ "#{obj.class.name}#{message_info} #{obj}"
93
+ else
94
+ content = {}
95
+ attrs = {:message => message}
96
+ methods[:instance].each do |instance_method|
97
+ value = obj.send(instance_method)
98
+ if instance_method == :size
99
+ attrs.store(:size, value)
100
+ else
101
+ content.store(instance_method.to_s, value)
102
+ end
103
+ end
104
+ methods[:class].each do |pair|
105
+ class_method, arguments = *pair
106
+ value = Object.const_get(obj.class.to_s).send(class_method, *arguments)
107
+ content.store(class_method.to_s, value)
108
+ end
109
+ _show_item(obj.class.name, content, attrs, info)
110
+ end
102
111
  end
103
112
 
104
113
  def show_struct(obj, message, info)
@@ -117,15 +126,6 @@ class DebugHelper
117
126
  _show_item(obj.class.name, content, attrs, info)
118
127
  end
119
128
 
120
- def show_symbol(obj, message, info)
121
- attrs = {
122
- :message => message,
123
- :size => obj.size,
124
- :encoding => obj.encoding,
125
- }
126
- _show_item(obj.class.name, obj, attrs, info)
127
- end
128
-
129
129
  def _show_item(class_name, content, attrs, info)
130
130
  message = attrs[:message]
131
131
  unless message.nil?
@@ -141,8 +141,49 @@ class DebugHelper
141
141
  attrs.each_pair do |key, value|
142
142
  a.push("#{key}=#{value}") unless value.nil?
143
143
  end
144
+ return class_name if a.empty?
144
145
  attrs_s = a.join(' ')
145
146
  "#{class_name} (#{attrs_s})"
146
147
  end
147
148
 
149
+ def methods_for_object(obj)
150
+ methods = case
151
+ when obj.kind_of?(File)
152
+ {
153
+ # The instance forms of some of these require the file to be open.
154
+ :class => {
155
+ :path => [obj.path],
156
+ :atime => [obj.path],
157
+ :ctime => [obj.path],
158
+ :mtime => [obj.path],
159
+ :size => [obj.path],
160
+ },
161
+ :instance => [],
162
+ }
163
+ when obj.kind_of?(String)
164
+ {
165
+ :class => {},
166
+ :instance => [
167
+ :to_s,
168
+ :size,
169
+ :encoding,
170
+ :ascii_only?,
171
+ :bytesize,
172
+ ]
173
+ }
174
+ when obj.kind_of?(Symbol)
175
+ {
176
+ :class => {},
177
+ :instance => [
178
+ :to_s,
179
+ :size,
180
+ :encoding,
181
+ ]
182
+ }
183
+ else
184
+ nil
185
+ end
186
+ methods
187
+ end
188
+
148
189
  end
@@ -1,3 +1,3 @@
1
1
  class DebugHelper
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -5,6 +5,12 @@ namespace :build do
5
5
  desc 'Build README.md'
6
6
  task :readme do
7
7
  # Make output files.
8
+ Dir.chdir('options/depth') do
9
+ command = 'ruby show.rb > show.yaml'
10
+ system(command)
11
+ command = 'markdown_helper include --pristine template.md show.md'
12
+ system(command)
13
+ end
8
14
  class_dir_names = nil
9
15
  Dir.chdir('classes') do
10
16
  class_names = %w/
@@ -21,9 +27,9 @@ namespace :build do
21
27
  case_dir_names = Dir.glob('*').select {|f| File.directory? f}
22
28
  case_dir_names.each do |case_dir_name|
23
29
  Dir.chdir(case_dir_name) do
24
- command = "ruby show.rb > show.yaml"
30
+ command = 'ruby show.rb > show.yaml'
25
31
  system(command)
26
- command = "markdown_helper include --pristine template.md show.md"
32
+ command = 'markdown_helper include --pristine template.md show.md'
27
33
  system(command)
28
34
  end
29
35
  end
@@ -18,8 +18,13 @@ The output shows details of the array.
18
18
  Array (message='My mixed array' size=3):
19
19
  Element 0: Fixnum 0
20
20
  Element 1:
21
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
22
- - one
21
+ String (size=3):
22
+ to_s: one
23
+ encoding: !ruby/encoding UTF-8
24
+ ascii_only?: true
25
+ bytesize: 3
23
26
  Element 2:
24
- Symbol (size=3 encoding=US-ASCII): :two
27
+ Symbol (size=3):
28
+ to_s: two
29
+ encoding: !ruby/encoding US-ASCII
25
30
  ```
@@ -2,7 +2,12 @@
2
2
  Array (message='My mixed array' size=3):
3
3
  Element 0: Fixnum 0
4
4
  Element 1:
5
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
6
- - one
5
+ String (size=3):
6
+ to_s: one
7
+ encoding: !ruby/encoding UTF-8
8
+ ascii_only?: true
9
+ bytesize: 3
7
10
  Element 2:
8
- Symbol (size=3 encoding=US-ASCII): :two
11
+ Symbol (size=3):
12
+ to_s: two
13
+ encoding: !ruby/encoding US-ASCII
@@ -23,11 +23,15 @@ The circular reference is not followed.
23
23
  Hash (size=1 message='My circular hashes'):
24
24
  Pair 0:
25
25
  Key:
26
- Symbol (size=3 encoding=US-ASCII): :foo
26
+ Symbol (size=3):
27
+ to_s: foo
28
+ encoding: !ruby/encoding US-ASCII
27
29
  Value:
28
30
  Hash (size=1):
29
31
  Pair 0:
30
32
  Key:
31
- Symbol (size=3 encoding=US-ASCII): :bar
33
+ Symbol (size=3):
34
+ to_s: bar
35
+ encoding: !ruby/encoding US-ASCII
32
36
  Value: Hash {:foo=>{:bar=>{...}}}
33
37
  ```
@@ -2,10 +2,14 @@
2
2
  Hash (size=1 message='My circular hashes'):
3
3
  Pair 0:
4
4
  Key:
5
- Symbol (size=3 encoding=US-ASCII): :foo
5
+ Symbol (size=3):
6
+ to_s: foo
7
+ encoding: !ruby/encoding US-ASCII
6
8
  Value:
7
9
  Hash (size=1):
8
10
  Pair 0:
9
11
  Key:
10
- Symbol (size=3 encoding=US-ASCII): :bar
12
+ Symbol (size=3):
13
+ to_s: bar
14
+ encoding: !ruby/encoding US-ASCII
11
15
  Value: Hash {:foo=>{:bar=>{...}}}
@@ -22,17 +22,28 @@ The output shows details of the hash.
22
22
  Hash (size=3 message='My mixed hash'):
23
23
  Pair 0:
24
24
  Key:
25
- Symbol (size=1 encoding=US-ASCII): :a
25
+ Symbol (size=1):
26
+ to_s: a
27
+ encoding: !ruby/encoding US-ASCII
26
28
  Value: Fixnum 0
27
29
  Pair 1:
28
30
  Key:
29
- Symbol (size=1 encoding=US-ASCII): :b
31
+ Symbol (size=1):
32
+ to_s: b
33
+ encoding: !ruby/encoding US-ASCII
30
34
  Value:
31
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
32
- - one
35
+ String (size=3):
36
+ to_s: one
37
+ encoding: !ruby/encoding UTF-8
38
+ ascii_only?: true
39
+ bytesize: 3
33
40
  Pair 2:
34
41
  Key:
35
- Symbol (size=1 encoding=US-ASCII): :c
42
+ Symbol (size=1):
43
+ to_s: c
44
+ encoding: !ruby/encoding US-ASCII
36
45
  Value:
37
- Symbol (size=3 encoding=US-ASCII): :two
46
+ Symbol (size=3):
47
+ to_s: two
48
+ encoding: !ruby/encoding US-ASCII
38
49
  ```
@@ -2,16 +2,27 @@
2
2
  Hash (size=3 message='My mixed hash'):
3
3
  Pair 0:
4
4
  Key:
5
- Symbol (size=1 encoding=US-ASCII): :a
5
+ Symbol (size=1):
6
+ to_s: a
7
+ encoding: !ruby/encoding US-ASCII
6
8
  Value: Fixnum 0
7
9
  Pair 1:
8
10
  Key:
9
- Symbol (size=1 encoding=US-ASCII): :b
11
+ Symbol (size=1):
12
+ to_s: b
13
+ encoding: !ruby/encoding US-ASCII
10
14
  Value:
11
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
12
- - one
15
+ String (size=3):
16
+ to_s: one
17
+ encoding: !ruby/encoding UTF-8
18
+ ascii_only?: true
19
+ bytesize: 3
13
20
  Pair 2:
14
21
  Key:
15
- Symbol (size=1 encoding=US-ASCII): :c
22
+ Symbol (size=1):
23
+ to_s: c
24
+ encoding: !ruby/encoding US-ASCII
16
25
  Value:
17
- Symbol (size=3 encoding=US-ASCII): :two
26
+ Symbol (size=3):
27
+ to_s: two
28
+ encoding: !ruby/encoding US-ASCII
@@ -27,28 +27,40 @@ The output shows details of the hashes.
27
27
  Hash (size=2 message='My nested hash'):
28
28
  Pair 0:
29
29
  Key:
30
- Symbol (size=1 encoding=US-ASCII): :a
30
+ Symbol (size=1):
31
+ to_s: a
32
+ encoding: !ruby/encoding US-ASCII
31
33
  Value:
32
34
  Hash (size=2):
33
35
  Pair 0:
34
36
  Key:
35
- Symbol (size=1 encoding=US-ASCII): :b
37
+ Symbol (size=1):
38
+ to_s: b
39
+ encoding: !ruby/encoding US-ASCII
36
40
  Value: Fixnum 0
37
41
  Pair 1:
38
42
  Key:
39
- Symbol (size=1 encoding=US-ASCII): :c
43
+ Symbol (size=1):
44
+ to_s: c
45
+ encoding: !ruby/encoding US-ASCII
40
46
  Value: Fixnum 1
41
47
  Pair 1:
42
48
  Key:
43
- Symbol (size=1 encoding=US-ASCII): :d
49
+ Symbol (size=1):
50
+ to_s: d
51
+ encoding: !ruby/encoding US-ASCII
44
52
  Value:
45
53
  Hash (size=2):
46
54
  Pair 0:
47
55
  Key:
48
- Symbol (size=1 encoding=US-ASCII): :e
56
+ Symbol (size=1):
57
+ to_s: e
58
+ encoding: !ruby/encoding US-ASCII
49
59
  Value: Fixnum 2
50
60
  Pair 1:
51
61
  Key:
52
- Symbol (size=1 encoding=US-ASCII): :f
62
+ Symbol (size=1):
63
+ to_s: f
64
+ encoding: !ruby/encoding US-ASCII
53
65
  Value: Fixnum 3
54
66
  ```
@@ -2,27 +2,39 @@
2
2
  Hash (size=2 message='My nested hash'):
3
3
  Pair 0:
4
4
  Key:
5
- Symbol (size=1 encoding=US-ASCII): :a
5
+ Symbol (size=1):
6
+ to_s: a
7
+ encoding: !ruby/encoding US-ASCII
6
8
  Value:
7
9
  Hash (size=2):
8
10
  Pair 0:
9
11
  Key:
10
- Symbol (size=1 encoding=US-ASCII): :b
12
+ Symbol (size=1):
13
+ to_s: b
14
+ encoding: !ruby/encoding US-ASCII
11
15
  Value: Fixnum 0
12
16
  Pair 1:
13
17
  Key:
14
- Symbol (size=1 encoding=US-ASCII): :c
18
+ Symbol (size=1):
19
+ to_s: c
20
+ encoding: !ruby/encoding US-ASCII
15
21
  Value: Fixnum 1
16
22
  Pair 1:
17
23
  Key:
18
- Symbol (size=1 encoding=US-ASCII): :d
24
+ Symbol (size=1):
25
+ to_s: d
26
+ encoding: !ruby/encoding US-ASCII
19
27
  Value:
20
28
  Hash (size=2):
21
29
  Pair 0:
22
30
  Key:
23
- Symbol (size=1 encoding=US-ASCII): :e
31
+ Symbol (size=1):
32
+ to_s: e
33
+ encoding: !ruby/encoding US-ASCII
24
34
  Value: Fixnum 2
25
35
  Pair 1:
26
36
  Key:
27
- Symbol (size=1 encoding=US-ASCII): :f
37
+ Symbol (size=1):
38
+ to_s: f
39
+ encoding: !ruby/encoding US-ASCII
28
40
  Value: Fixnum 3
@@ -18,14 +18,20 @@ The output shows details of the hash.
18
18
  Hash (size=3 message='My simple hash'):
19
19
  Pair 0:
20
20
  Key:
21
- Symbol (size=1 encoding=US-ASCII): :a
21
+ Symbol (size=1):
22
+ to_s: a
23
+ encoding: !ruby/encoding US-ASCII
22
24
  Value: Fixnum 0
23
25
  Pair 1:
24
26
  Key:
25
- Symbol (size=1 encoding=US-ASCII): :b
27
+ Symbol (size=1):
28
+ to_s: b
29
+ encoding: !ruby/encoding US-ASCII
26
30
  Value: Fixnum 1
27
31
  Pair 2:
28
32
  Key:
29
- Symbol (size=1 encoding=US-ASCII): :c
33
+ Symbol (size=1):
34
+ to_s: c
35
+ encoding: !ruby/encoding US-ASCII
30
36
  Value: Fixnum 2
31
37
  ```
@@ -2,13 +2,19 @@
2
2
  Hash (size=3 message='My simple hash'):
3
3
  Pair 0:
4
4
  Key:
5
- Symbol (size=1 encoding=US-ASCII): :a
5
+ Symbol (size=1):
6
+ to_s: a
7
+ encoding: !ruby/encoding US-ASCII
6
8
  Value: Fixnum 0
7
9
  Pair 1:
8
10
  Key:
9
- Symbol (size=1 encoding=US-ASCII): :b
11
+ Symbol (size=1):
12
+ to_s: b
13
+ encoding: !ruby/encoding US-ASCII
10
14
  Value: Fixnum 1
11
15
  Pair 2:
12
16
  Key:
13
- Symbol (size=1 encoding=US-ASCII): :c
17
+ Symbol (size=1):
18
+ to_s: c
19
+ encoding: !ruby/encoding US-ASCII
14
20
  Value: Fixnum 2
@@ -14,6 +14,6 @@ The output shows details of the datetime.
14
14
 
15
15
  ```show.yaml```:
16
16
  ```yaml
17
- --- DateTime (message='My datetime') 2018-07-04T14:49:11-05:00
17
+ --- DateTime (message='My datetime') 2018-07-13T09:59:53-05:00
18
18
  ...
19
19
  ```
@@ -1,2 +1,2 @@
1
- --- DateTime (message='My datetime') 2018-07-04T14:49:11-05:00
1
+ --- DateTime (message='My datetime') 2018-07-13T09:59:53-05:00
2
2
  ...
@@ -18,8 +18,11 @@ The output shows details of the string.
18
18
  ```show.yaml```:
19
19
  ```yaml
20
20
  ---
21
- String (message='My multiline string' size=122 encoding=UTF-8 ascii_only=true bytesize=122):
22
- - |
23
- Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
24
- sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
21
+ String (message='My multiline string' size=122):
22
+ to_s: |
23
+ Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
24
+ sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
25
+ encoding: !ruby/encoding UTF-8
26
+ ascii_only?: true
27
+ bytesize: 122
25
28
  ```
@@ -1,5 +1,8 @@
1
1
  ---
2
- String (message='My multiline string' size=122 encoding=UTF-8 ascii_only=true bytesize=122):
3
- - |
4
- Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
5
- sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
2
+ String (message='My multiline string' size=122):
3
+ to_s: |
4
+ Lorem Ipsum dolor sit amet,consectetur adipisicing elit,
5
+ sed doeiusmod tempor incididunt ut laboreet dolore magna aliqua.
6
+ encoding: !ruby/encoding UTF-8
7
+ ascii_only?: true
8
+ bytesize: 122
@@ -15,6 +15,9 @@ The output shows details of the string.
15
15
  ```show.yaml```:
16
16
  ```yaml
17
17
  ---
18
- String (message='My simple string' size=11 encoding=UTF-8 ascii_only=true bytesize=11):
19
- - Lorem ipsum
18
+ String (message='My simple string' size=11):
19
+ to_s: Lorem ipsum
20
+ encoding: !ruby/encoding UTF-8
21
+ ascii_only?: true
22
+ bytesize: 11
20
23
  ```
@@ -1,3 +1,6 @@
1
1
  ---
2
- String (message='My simple string' size=11 encoding=UTF-8 ascii_only=true bytesize=11):
3
- - Lorem ipsum
2
+ String (message='My simple string' size=11):
3
+ to_s: Lorem ipsum
4
+ encoding: !ruby/encoding UTF-8
5
+ ascii_only?: true
6
+ bytesize: 11
@@ -23,10 +23,15 @@ MyStruct (message='My mixed struct' size=3):
23
23
  Member 1:
24
24
  Name: :b
25
25
  Value:
26
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
27
- - one
26
+ String (size=3):
27
+ to_s: one
28
+ encoding: !ruby/encoding UTF-8
29
+ ascii_only?: true
30
+ bytesize: 3
28
31
  Member 2:
29
32
  Name: :c
30
33
  Value:
31
- Symbol (size=3 encoding=US-ASCII): :two
34
+ Symbol (size=3):
35
+ to_s: two
36
+ encoding: !ruby/encoding US-ASCII
32
37
  ```
@@ -6,9 +6,14 @@ MyStruct (message='My mixed struct' size=3):
6
6
  Member 1:
7
7
  Name: :b
8
8
  Value:
9
- String (size=3 encoding=UTF-8 ascii_only=true bytesize=3):
10
- - one
9
+ String (size=3):
10
+ to_s: one
11
+ encoding: !ruby/encoding UTF-8
12
+ ascii_only?: true
13
+ bytesize: 3
11
14
  Member 2:
12
15
  Name: :c
13
16
  Value:
14
- Symbol (size=3 encoding=US-ASCII): :two
17
+ Symbol (size=3):
18
+ to_s: two
19
+ encoding: !ruby/encoding US-ASCII
@@ -14,5 +14,7 @@ The output shows details of the symbol.
14
14
  ```show.yaml```:
15
15
  ```yaml
16
16
  ---
17
- Symbol (message='My symbol' size=11 encoding=US-ASCII): :lorem_ipsum
17
+ Symbol (message='My symbol' size=11):
18
+ to_s: lorem_ipsum
19
+ encoding: !ruby/encoding US-ASCII
18
20
  ```
@@ -1,2 +1,4 @@
1
1
  ---
2
- Symbol (message='My symbol' size=11 encoding=US-ASCII): :lorem_ipsum
2
+ Symbol (message='My symbol' size=11):
3
+ to_s: lorem_ipsum
4
+ encoding: !ruby/encoding US-ASCII
@@ -0,0 +1,77 @@
1
+ ### Option ```depth```
2
+
3
+ This example shows how option ```depth``` affects output.
4
+
5
+ ```show.rb```:
6
+ ```ruby
7
+ require 'debug_helper'
8
+
9
+ ary = [0,
10
+ [1,
11
+ [2,
12
+ [3,
13
+ [4]
14
+ ]
15
+ ]
16
+ ]
17
+ ]
18
+ (1..5).each do |depth|
19
+ message = "Show depth #{depth}"
20
+ DebugHelper.show(ary, message, {:depth => depth})
21
+ end
22
+ ```
23
+
24
+ The output shows output for various depths.
25
+
26
+ ```show.yaml```:
27
+ ```yaml
28
+ ---
29
+ Array (message='Show depth 1' size=2):
30
+ Element 0: Fixnum 0
31
+ Element 1: Array [1, [2, [3, [4]]]]
32
+ ---
33
+ Array (message='Show depth 2' size=2):
34
+ Element 0: Fixnum 0
35
+ Element 1:
36
+ Array (size=2):
37
+ Element 0: Fixnum 1
38
+ Element 1: Array [2, [3, [4]]]
39
+ ---
40
+ Array (message='Show depth 3' size=2):
41
+ Element 0: Fixnum 0
42
+ Element 1:
43
+ Array (size=2):
44
+ Element 0: Fixnum 1
45
+ Element 1:
46
+ Array (size=2):
47
+ Element 0: Fixnum 2
48
+ Element 1: Array [3, [4]]
49
+ ---
50
+ Array (message='Show depth 4' size=2):
51
+ Element 0: Fixnum 0
52
+ Element 1:
53
+ Array (size=2):
54
+ Element 0: Fixnum 1
55
+ Element 1:
56
+ Array (size=2):
57
+ Element 0: Fixnum 2
58
+ Element 1:
59
+ Array (size=2):
60
+ Element 0: Fixnum 3
61
+ Element 1: Array [4]
62
+ ---
63
+ Array (message='Show depth 5' size=2):
64
+ Element 0: Fixnum 0
65
+ Element 1:
66
+ Array (size=2):
67
+ Element 0: Fixnum 1
68
+ Element 1:
69
+ Array (size=2):
70
+ Element 0: Fixnum 2
71
+ Element 1:
72
+ Array (size=2):
73
+ Element 0: Fixnum 3
74
+ Element 1:
75
+ Array (size=1):
76
+ Element 0: Fixnum 4
77
+ ```
@@ -0,0 +1,15 @@
1
+ require 'debug_helper'
2
+
3
+ ary = [0,
4
+ [1,
5
+ [2,
6
+ [3,
7
+ [4]
8
+ ]
9
+ ]
10
+ ]
11
+ ]
12
+ (1..5).each do |depth|
13
+ message = "Show depth #{depth}"
14
+ DebugHelper.show(ary, message, {:depth => depth})
15
+ end
@@ -0,0 +1,49 @@
1
+ ---
2
+ Array (message='Show depth 1' size=2):
3
+ Element 0: Fixnum 0
4
+ Element 1: Array [1, [2, [3, [4]]]]
5
+ ---
6
+ Array (message='Show depth 2' size=2):
7
+ Element 0: Fixnum 0
8
+ Element 1:
9
+ Array (size=2):
10
+ Element 0: Fixnum 1
11
+ Element 1: Array [2, [3, [4]]]
12
+ ---
13
+ Array (message='Show depth 3' size=2):
14
+ Element 0: Fixnum 0
15
+ Element 1:
16
+ Array (size=2):
17
+ Element 0: Fixnum 1
18
+ Element 1:
19
+ Array (size=2):
20
+ Element 0: Fixnum 2
21
+ Element 1: Array [3, [4]]
22
+ ---
23
+ Array (message='Show depth 4' size=2):
24
+ Element 0: Fixnum 0
25
+ Element 1:
26
+ Array (size=2):
27
+ Element 0: Fixnum 1
28
+ Element 1:
29
+ Array (size=2):
30
+ Element 0: Fixnum 2
31
+ Element 1:
32
+ Array (size=2):
33
+ Element 0: Fixnum 3
34
+ Element 1: Array [4]
35
+ ---
36
+ Array (message='Show depth 5' size=2):
37
+ Element 0: Fixnum 0
38
+ Element 1:
39
+ Array (size=2):
40
+ Element 0: Fixnum 1
41
+ Element 1:
42
+ Array (size=2):
43
+ Element 0: Fixnum 2
44
+ Element 1:
45
+ Array (size=2):
46
+ Element 0: Fixnum 3
47
+ Element 1:
48
+ Array (size=1):
49
+ Element 0: Fixnum 4
@@ -0,0 +1,9 @@
1
+ ### Option ```depth```
2
+
3
+ This example shows how option ```depth``` affects output.
4
+
5
+ @[ruby](show.rb)
6
+
7
+ The output shows output for various depths.
8
+
9
+ @[yaml](show.yaml)
@@ -14,6 +14,8 @@ For certain classes (see below), the analysis is very detailed.
14
14
 
15
15
  For the collection classes ```Array```, ```Hash```, and ```Struct```, the analysis is also recursive; that is, the collection's values are themselves analyzed.
16
16
 
17
+ You can control the depth of recursion using option ```depth```. See [Options](#options).
18
+
17
19
  Classes treated in detail:
18
20
 
19
21
  @[:markdown](class_links.md)
@@ -42,3 +44,7 @@ putd obj, message
42
44
  Just be sure to ```include DebugHelper::Putd```.
43
45
 
44
46
  @[:markdown](class_inclusions.md)
47
+
48
+ ## Options
49
+
50
+ @[:markdown](options/depth/show.md)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: debug_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - burdettelamar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-07 00:00:00.000000000 Z
11
+ date: 2018-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -156,6 +156,10 @@ files:
156
156
  - markdown/readme/classes/symbol/simple/template.md
157
157
  - markdown/readme/classes/symbol/template.md
158
158
  - markdown/readme/classes/template.md
159
+ - markdown/readme/options/depth/show.md
160
+ - markdown/readme/options/depth/show.rb
161
+ - markdown/readme/options/depth/show.yaml
162
+ - markdown/readme/options/depth/template.md
159
163
  - markdown/readme/show_array.rb
160
164
  - markdown/readme/show_hash.rb
161
165
  - markdown/readme/template.md