constree 0.1.7 → 0.1.9
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 +4 -4
- data/.gitignore +1 -0
- data/README.md +37 -2
- data/constree.gemspec +1 -0
- data/lib/constree/node.rb +14 -0
- data/lib/constree/version.rb +1 -1
- data/lib/constree.rb +13 -3
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bcfc7a688043ae320be5ab2ded3d28f2631c7c2eb8e72175d5813f410c9ce11
|
4
|
+
data.tar.gz: 36fdeedbd8924a5407d5ce519937db857a19233c48fa4bceadb8393f3d9ff8ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e0a14a48ee6e30df121beef8f0a6c66319f1b0b1a2ce49285e3489fb1b2d57b2daef463b1f79c6e2a2f8f76795f784b473bd1f48b5c10edc3aed129d4a56358
|
7
|
+
data.tar.gz: 1b14c36e7d3ecb7a8169bd1838fe04225a607ad8ee5a1bab37a0fe094798439495441bc76ad826cd616127d78054ea93a76ba24d9a8d827715a9792e62282efc
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -18,12 +18,47 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
$ gem install constree
|
20
20
|
|
21
|
-
## Example:
|
21
|
+
## Example: find distinct module/class under a module
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
[1] pry(main)> require "concurrent-ruby"
|
25
|
+
=> true
|
26
|
+
[2] pry(main)> require "constree"
|
27
|
+
=> true
|
28
|
+
[3] pry(main)> Constree.uniq(Concurrent)
|
29
|
+
=> #<Set:
|
30
|
+
{Concurrent,
|
31
|
+
Concurrent::AtomicDirectUpdate,
|
32
|
+
Concurrent::AtomicNumericCompareAndSetWrapper,
|
33
|
+
Concurrent::CyclicBarrier,
|
34
|
+
Concurrent::Synchronization::Volatile::ClassMethods,
|
35
|
+
Concurrent::Promises,
|
36
|
+
Concurrent::Promises::FactoryMethods,
|
37
|
+
Concurrent::Promises::FactoryMethods::Configuration,
|
38
|
+
Concurrent::Promises::Resolvable,
|
39
|
+
Concurrent::Promises::InternalStates::State,
|
40
|
+
Concurrent::Promises::InternalStates::Pending,
|
41
|
+
Concurrent::Promises::InternalStates::Reserved,
|
42
|
+
Concurrent::Promises::InternalStates::ResolvedWithResult,
|
43
|
+
Concurrent::Promises::InternalStates::Fulfilled,
|
44
|
+
Concurrent::Promises::InternalStates::FulfilledArray,
|
45
|
+
...
|
46
|
+
```
|
47
|
+
|
48
|
+
## Example: output tree to html
|
49
|
+
|
50
|
+
```ruby
|
51
|
+
File.open('somewhere', 'w') do |f|
|
52
|
+
f.puts Constree.html_of SomeConstant
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
## Example: check constants in concurrent-ruby, in irb console
|
22
57
|
|
23
58
|
```ruby
|
24
59
|
irb(main):001:0> require "concurrent-ruby"
|
25
60
|
=> true
|
26
|
-
irb(main):002:0> Constree.p
|
61
|
+
irb(main):002:0> Constree.p Concurrent
|
27
62
|
Concurrent {:kla=>Module}
|
28
63
|
├─AbstractExchanger {:kla=>Class, :aft=>[Concurrent::Synchronization::Object, Concurrent::Synchronization::MriObject, Concurrent::Synchronization::MriAttrVolatile, Concurrent::Synchronization::AbstractObject, Object, Kernel, BasicObject]}
|
29
64
|
│ └─ClassMethods {:kla=>Module}
|
data/constree.gemspec
CHANGED
data/lib/constree/node.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'tree_graph'
|
2
|
+
require 'tree_html'
|
2
3
|
|
3
4
|
module Constree
|
4
5
|
Node = Struct.new :constant, :name, :parent do
|
@@ -13,6 +14,18 @@ module Constree
|
|
13
14
|
@sub_consts ||= []
|
14
15
|
end
|
15
16
|
|
17
|
+
include TreeHtml
|
18
|
+
|
19
|
+
def label_for_tree_html
|
20
|
+
"<span class='hl'>#{display_name}</span> #{verbose}"
|
21
|
+
end
|
22
|
+
|
23
|
+
alias_method :children_for_tree_html, :children_for_tree_graph
|
24
|
+
|
25
|
+
def css_for_tree_html
|
26
|
+
'.hl{color: coral;}'
|
27
|
+
end
|
28
|
+
|
16
29
|
attr_accessor :ref
|
17
30
|
|
18
31
|
def sub_nodes
|
@@ -36,6 +49,7 @@ module Constree
|
|
36
49
|
end
|
37
50
|
|
38
51
|
def == other
|
52
|
+
return false unless constant.is_a? Module
|
39
53
|
return false unless other.is_a? Node
|
40
54
|
constant == other.constant
|
41
55
|
end
|
data/lib/constree/version.rb
CHANGED
data/lib/constree.rb
CHANGED
@@ -1,9 +1,17 @@
|
|
1
1
|
require 'constree/version'
|
2
2
|
require 'constree/node'
|
3
|
+
require 'set'
|
3
4
|
|
4
5
|
module Constree
|
5
|
-
|
6
6
|
class << self
|
7
|
+
def uniq(mod, set = Set.new)
|
8
|
+
set << mod
|
9
|
+
mod.constants.each do |name|
|
10
|
+
sub_mod = mod.const_get(name)
|
11
|
+
uniq(sub_mod, set) if ::Module === sub_mod && !set.include?(sub_mod)
|
12
|
+
end
|
13
|
+
set
|
14
|
+
end
|
7
15
|
|
8
16
|
def list node, seen=[]
|
9
17
|
node = Node.new node unless node.is_a? Node
|
@@ -22,10 +30,12 @@ module Constree
|
|
22
30
|
list(mod).first.tree_graph
|
23
31
|
end
|
24
32
|
|
33
|
+
def html_of mod
|
34
|
+
list(mod).first.tree_html_full
|
35
|
+
end
|
36
|
+
|
25
37
|
def p mod
|
26
38
|
puts of mod
|
27
39
|
end
|
28
|
-
|
29
40
|
end
|
30
|
-
|
31
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ken
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,7 +66,21 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.2.0
|
69
|
-
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: tree_html
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.1.10
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.1.10
|
83
|
+
description:
|
70
84
|
email:
|
71
85
|
- block24block@gmail.com
|
72
86
|
executables: []
|
@@ -91,7 +105,7 @@ homepage: https://github.com/turnon/constree
|
|
91
105
|
licenses:
|
92
106
|
- MIT
|
93
107
|
metadata: {}
|
94
|
-
post_install_message:
|
108
|
+
post_install_message:
|
95
109
|
rdoc_options: []
|
96
110
|
require_paths:
|
97
111
|
- lib
|
@@ -106,8 +120,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
120
|
- !ruby/object:Gem::Version
|
107
121
|
version: '0'
|
108
122
|
requirements: []
|
109
|
-
rubygems_version: 3.1
|
110
|
-
signing_key:
|
123
|
+
rubygems_version: 3.4.1
|
124
|
+
signing_key:
|
111
125
|
specification_version: 4
|
112
126
|
summary: recursively show the structure of constants in a module
|
113
127
|
test_files: []
|