family_tree 0.1.1 → 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: 0b7c4cae251c42b16ff5bdc9224f36ac1a61c066949252f7f9d285f6494e65f7
4
- data.tar.gz: 92d1b69634eb58fecab5e34952526d17bffb8146c31e8b7ca49bb01544c64fde
3
+ metadata.gz: 8c1cfba0d425a2c5eb99459dfaa500d8b12f831a57d17b217886b1d1e803a377
4
+ data.tar.gz: a17f78e547bdcb4748a817d488c8fe4752be054accde4fbb313105b3cb02b195
5
5
  SHA512:
6
- metadata.gz: abf3a7743b24d80621b3d06759dfa06088880c818aa29e1cde67749d633a8848049244aa146877db31a118ee837acf64f6bbe7cc48e115599d4d143bdf684bfd
7
- data.tar.gz: 5677cbc0098ad3707eb047d12750e6e0dd3948ae6ffde2812f61a081594aa2647a415c514ecdfac974bb91388c31c3a57e02b571fca6048b4ce0c268ca8d3bb4
6
+ metadata.gz: '0329b3709fd8667e3ac8d35143063d27b34acfbc8a042830f4622dcbac05a40cb4d159c653e79b76dbcc969d7a8bdb51d770c364423cb2cb1441dbc1045cfbaf'
7
+ data.tar.gz: 32eea8b2c3a3f7adb836d5625eb41e3bca19f38fb5e863dc77a4e77aa9c417fe251a062d5084fea1839459537eef79aea306510daf427211d4e8d74621bd11ca
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.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/family_tree.rb CHANGED
@@ -1,22 +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
13
+ alias_method :label_for_tree_html, :klass
11
14
 
12
15
  def initialize(klass)
13
16
  @klass = klass
14
17
  @descendants = []
15
18
  end
16
19
 
17
- def children_for_tree_graph
20
+ def sorted_children
18
21
  descendants.sort_by{ |d| d.klass.name }
19
22
  end
23
+
24
+ alias_method :children_for_tree_html, :sorted_children
25
+ alias_method :children_for_tree_graph, :sorted_children
20
26
  end
21
27
 
22
28
  class << self
@@ -26,9 +32,7 @@ module FamilyTree
26
32
  Array(klasses).each do |k|
27
33
  parent = root
28
34
 
29
- if String === k
30
- k = k.split('::').reduce(::Object){ |namespace, name| namespace.const_get(name) }
31
- end
35
+ k = ::Object.const_get(k) if String === k
32
36
 
33
37
  k.ancestors.reverse_each do |a|
34
38
  next unless Class === a
@@ -51,5 +55,9 @@ module FamilyTree
51
55
  def graph(klasses)
52
56
  of(klasses).tree_graph
53
57
  end
58
+
59
+ def html(klasses)
60
+ of(klasses).tree_html_full
61
+ end
54
62
  end
55
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.1
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-24 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