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.
- checksums.yaml +7 -0
- data/lib/pry-hier.rb +51 -0
- 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: []
|