pry-hier 0.1.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pry-hier.rb +51 -0
  3. metadata +96 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 851ccbfef429e3902365311d9b8e10fa026b609473007ec03113761eb52025a6
4
+ data.tar.gz: 5af5f87fa387c499b0f296576f16cacfbbadd465e8730900c87a4a850cf683b7
5
+ SHA512:
6
+ metadata.gz: 72b7eba7f6085d7aee90ec4349600c681d3d27c9a9e3c070e41bb39a237b75d010ff759ed476eb5733572a9fccaeed6c268eab271ef41def6c5dfeaf77c72de0
7
+ data.tar.gz: 045fa7ca163196916f78aa9a90e417b2da8044ab535ade57e6fd4a67e72e537c5543465b8e5114634aa3f4e5ea76153d2d5759aff7883560bcfd6f08809dd243
data/lib/pry-hier.rb ADDED
@@ -0,0 +1,51 @@
1
+ require 'pry'
2
+ require 'tty-tree'
3
+
4
+ class Pry
5
+ Commands.create_command 'hier' do
6
+ description 'Shows descendants of a class: hier [Class|Module]'
7
+
8
+ def process
9
+ klass = WrappedModule.from_str(args[0])
10
+ raise CommandError, 'class or module name required' unless klass
11
+ print_tree_for(klass.wrapped)
12
+ end
13
+
14
+ def options(opt)
15
+ opt.on :s, :include_singletons, 'Include singleton classes'
16
+ end
17
+
18
+ private
19
+
20
+ def print_tree_for(klass)
21
+ set_class_list(klass)
22
+ tree = hash_for(klass)
23
+ case tree
24
+ when Hash then output.print TTY::Tree.new(hash_for(klass)).render
25
+ else output.puts colour_name(klass)
26
+ end
27
+ end
28
+
29
+ def hash_for(klass)
30
+ children = children_of(klass).map(&method(:hash_for))
31
+ colour_name(klass).yield_self do |name|
32
+ children.empty? ? name : { name => children }
33
+ end
34
+ end
35
+
36
+ def children_of(klass)
37
+ @classes.select { |obj| obj.superclass == klass }
38
+ end
39
+
40
+ def colour_name(klass)
41
+ Pry.config.color ? colorize_code(klass) : klass.inspect
42
+ end
43
+
44
+ def set_class_list(klass)
45
+ @classes = ObjectSpace.each_object.select do |obj|
46
+ obj.is_a?(Class) &&
47
+ (opts.include_singletons? || ! obj.singleton_class?)
48
+ end
49
+ end
50
+ end
51
+ end
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pry-hier
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Paul Sonkoly
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.12'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: tty-tree
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.8'
55
+ description: |
56
+ Given an class or module name hier command shows an ascii tree (similar to
57
+ the tree shell command) of the descendants of the given class.
58
+
59
+ at pry prompt:
60
+
61
+ [0](main) λ hier Numeric
62
+ Numeric
63
+ ├── Complex
64
+ ├── Rational
65
+ ├── Float
66
+ └── Integer
67
+ email: sonkoly.pal@gmail.com
68
+ executables: []
69
+ extensions: []
70
+ extra_rdoc_files: []
71
+ files:
72
+ - lib/pry-hier.rb
73
+ homepage: http://github.com/phaul/pry-hier
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubygems_version: 3.0.2
93
+ signing_key:
94
+ specification_version: 4
95
+ summary: Shows an ascii art tree of the descendants of a class.
96
+ test_files: []