hierarchy-tree 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hierarchy_tree.rb +21 -10
  3. metadata +8 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c69d1d28db8ef461d3a9dbdc093cee55aeb3899d0127965f5f282402e3a92d20
4
- data.tar.gz: 66637e5ac94c03c4add0fe2373141761ce89cb96aeff0b0bf7eda20cdda1a50c
3
+ metadata.gz: 5c2620a107d595da64c5854efec9c90f4ebada54e79ea851e35cd698dd31cb7e
4
+ data.tar.gz: 3957eb61b1debe9dcff8049d89947a60b594b348f3e65b31f25615d4bb56a8de
5
5
  SHA512:
6
- metadata.gz: 4d24c501e41cf7594dd4ade171659fda73b0fde49dd812bd4ac05af3e1fc77b77e9845b101972e067db10cb54af3890d19ed84f1bbddd8b20d1fcac7d1e227dd
7
- data.tar.gz: 006ad25440512ff39490a5b7ed8988c7b34c0ce2f73d4085a6947c9cd4e00e2e70f653560c386ff02d8a6e3e3e0ab8ef5bf14ccc09db9f01d641e1fe493b0b72
6
+ metadata.gz: cfe0cdf719a378c501ac89db2df73349f9af3b131c39947e0ad3b9126032ca2898997fad85f4ae532b30fa11062e84fbc339c5a7d6e2cd7f092d486426a84040
7
+ data.tar.gz: 0b3677fe95dd795eb1ba93671e9878df59e712d4378c0a638cb62765f7bc49fef2e8ab8e91133934723afb2b91149a6984b25353d383911d7d516bd6539dd9bf
@@ -1,17 +1,28 @@
1
1
  require 'active_record'
2
2
  require 'active_support/core_ext/object/inclusion.rb'
3
3
 
4
+ ################ Debug ################
5
+ # rm hierarchy-tree-X.Y.Z.gem
6
+ # gem build hierarchy_tree
7
+ # gem install hierarchy-tree-X.Y.Z.gem
8
+ # ruby -Itest test/test_hierarchy_tree.rb
9
+
4
10
  class Hierarchy
5
11
  # Return the full hierarchy starting from the provided class
6
12
  def self.associations(klass)
7
- build_hierarchy(klass)
13
+ build_hierarchy(class: klass)
14
+ end
15
+
16
+ # Return the full hierarchy starting from the provided class
17
+ def self.classes(klass)
18
+ build_hierarchy(class: klass, classes?: true)
8
19
  end
9
20
 
10
- # Return just the descendant classes of a provided class
11
- def self.descendants(klass)
12
- @descendants = []
21
+ # Return an array o
22
+ def self.classes_list(klass)
23
+ @classes_list = []
13
24
  build_descendants(klass)
14
- @descendants
25
+ @classes_list
15
26
  end
16
27
 
17
28
  def self.loop?(klass)
@@ -23,9 +34,9 @@ class Hierarchy
23
34
 
24
35
  private_class_method
25
36
 
26
- def self.build_hierarchy(klass)
37
+ def self.build_hierarchy(opts)
27
38
  @cache = {}
28
- dfs_hierarchy(class: klass)
39
+ dfs_hierarchy(opts)
29
40
  rescue SystemStackError
30
41
  Rails.logger.ap "Infinite loop detected and handled for #{opts[:class]} hierarchy", :warn
31
42
  []
@@ -81,13 +92,13 @@ class Hierarchy
81
92
  def self.build_descendants(klass)
82
93
  dfs_descendants(class: klass, classes?: true)
83
94
  rescue SystemStackError
84
- Rails.logger.ap "Infinite loop detected and handled for #{opts[:class]} descendants", :warn
95
+ Rails.logger.ap "Infinite loop detected and handled for #{opts[:class]} classes_list", :warn
85
96
  []
86
97
  end
87
98
 
88
99
  def self.dfs_descendants(opts, klass_name = nil)
89
- return if klass_name.in? @descendants
90
- @descendants.push(klass_name) if klass_name.present?
100
+ return if klass_name.in? @classes_list
101
+ @classes_list.push(klass_name) if klass_name.present?
91
102
  children_classes(opts).each do |child_klass, child_name|
92
103
  child_opts = { class: child_klass, classes?: opts[:classes?] }
93
104
  dfs_descendants(child_opts, child_name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hierarchy-tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Cordeiro Costa
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-28 00:00:00.000000000 Z
11
+ date: 2023-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -42,14 +42,14 @@ dependencies:
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.2'
55
55
  description: |-
@@ -66,7 +66,7 @@ homepage: https://github.com/Victorcorcos/hierarchy-tree
66
66
  licenses:
67
67
  - MIT
68
68
  metadata: {}
69
- post_install_message:
69
+ post_install_message:
70
70
  rdoc_options: []
71
71
  require_paths:
72
72
  - lib
@@ -81,9 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubyforge_project:
85
- rubygems_version: 2.7.9
86
- signing_key:
84
+ rubygems_version: 3.1.6
85
+ signing_key:
87
86
  specification_version: 4
88
87
  summary: hierarchy-tree is a gem that shows the whole hierarchy and the associations
89
88
  related to a desired class.