family_tree 0.1.0 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f3c159380e2736313f949cc4b81ef4a5c0c05672cd080a10a485a257fa99b3a
4
- data.tar.gz: 635c9ae50196b3c727135a96c93352ee7da56a811a0ad285f835701aec341f03
3
+ metadata.gz: 8c1cfba0d425a2c5eb99459dfaa500d8b12f831a57d17b217886b1d1e803a377
4
+ data.tar.gz: a17f78e547bdcb4748a817d488c8fe4752be054accde4fbb313105b3cb02b195
5
5
  SHA512:
6
- metadata.gz: a8352490bcc6c1e52560b63d81aa7e16404ef55056e48ea4823b4e60b3a6bf22646a1e69b26d1e388279ca28b33d2af8184f8af4fd9200879ff36629f12e2e67
7
- data.tar.gz: 67ee2997beecb2b5f2968fdcd5e1533559581f6f6c544061be916df82d05c5b9eb2ee4844af2d6d6c45ad1dc81dbe5ea3af3782900711112ff11145f3dae51cd
6
+ metadata.gz: '0329b3709fd8667e3ac8d35143063d27b34acfbc8a042830f4622dcbac05a40cb4d159c653e79b76dbcc969d7a8bdb51d770c364423cb2cb1441dbc1045cfbaf'
7
+ data.tar.gz: 32eea8b2c3a3f7adb836d5625eb41e3bca19f38fb5e863dc77a4e77aa9c417fe251a062d5084fea1839459537eef79aea306510daf427211d4e8d74621bd11ca
data/.gitignore CHANGED
@@ -6,3 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+
10
+ *.gem
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- family_tree (0.1.0)
4
+ family_tree (0.1.1)
5
5
  tree_graph (~> 0.2.4)
6
+ tree_html (~> 0.1.10)
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
@@ -10,6 +11,7 @@ GEM
10
11
  minitest (5.16.3)
11
12
  rake (12.3.3)
12
13
  tree_graph (0.2.4)
14
+ tree_html (0.1.10)
13
15
 
14
16
  PLATFORMS
15
17
  ruby
data/README.md CHANGED
@@ -27,8 +27,7 @@ class A; end
27
27
  class B; end
28
28
  class C < B;end
29
29
 
30
- FamilyTree.graph([A, B, C])
31
-
30
+ puts FamilyTree.graph([A, B, C])
32
31
  # BasicObject
33
32
  # └─Object
34
33
  # ├─A
@@ -36,6 +35,25 @@ FamilyTree.graph([A, B, C])
36
35
  # └─C
37
36
  ```
38
37
 
38
+ You can output to html
39
+
40
+ ```ruby
41
+ File.open('abc-hierarchy.html', 'w') do |f|
42
+ f.puts FamilyTree.html([A, B, C])
43
+ end
44
+ ```
45
+
46
+ For private constant, pass full name in string
47
+
48
+ ```ruby
49
+ module M
50
+ class K; end
51
+ private_constant :K
52
+ end
53
+
54
+ FamilyTree.graph(['M::K'])
55
+ ```
56
+
39
57
  ## Development
40
58
 
41
59
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
data/family_tree.gemspec CHANGED
@@ -21,4 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_dependency "tree_graph", "~> 0.2.4"
24
+ spec.add_dependency "tree_html", "~> 0.1.10"
24
25
  end
@@ -1,3 +1,3 @@
1
1
  module FamilyTree
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/family_tree.rb CHANGED
@@ -1,19 +1,28 @@
1
1
  require "family_tree/version"
2
2
  require "tree_graph"
3
+ require "tree_html"
3
4
 
4
5
  module FamilyTree
5
6
  class Node
6
7
  include TreeGraph
8
+ include TreeHtml
7
9
 
8
10
  attr_reader :klass, :descendants
9
11
 
10
12
  alias_method :label_for_tree_graph, :klass
11
- alias_method :children_for_tree_graph, :descendants
13
+ alias_method :label_for_tree_html, :klass
12
14
 
13
15
  def initialize(klass)
14
16
  @klass = klass
15
17
  @descendants = []
16
18
  end
19
+
20
+ def sorted_children
21
+ descendants.sort_by{ |d| d.klass.name }
22
+ end
23
+
24
+ alias_method :children_for_tree_html, :sorted_children
25
+ alias_method :children_for_tree_graph, :sorted_children
17
26
  end
18
27
 
19
28
  class << self
@@ -23,6 +32,8 @@ module FamilyTree
23
32
  Array(klasses).each do |k|
24
33
  parent = root
25
34
 
35
+ k = ::Object.const_get(k) if String === k
36
+
26
37
  k.ancestors.reverse_each do |a|
27
38
  next unless Class === a
28
39
  next if ::BasicObject == a
@@ -44,5 +55,9 @@ module FamilyTree
44
55
  def graph(klasses)
45
56
  of(klasses).tree_graph
46
57
  end
58
+
59
+ def html(klasses)
60
+ of(klasses).tree_html_full
61
+ end
47
62
  end
48
63
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: family_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ken
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-23 00:00:00.000000000 Z
11
+ date: 2022-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tree_graph
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.2.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: tree_html
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.10
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.10
27
41
  description:
28
42
  email:
29
43
  - block24block@gmail.com