family_tree 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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