family_tree 0.1.1 → 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: 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