parentry 1.5.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,207 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ parentry (1.7.0)
5
+ activerecord (>= 6.1, < 8)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionpack (7.2.0)
11
+ actionview (= 7.2.0)
12
+ activesupport (= 7.2.0)
13
+ nokogiri (>= 1.8.5)
14
+ racc
15
+ rack (>= 2.2.4, < 3.2)
16
+ rack-session (>= 1.0.1)
17
+ rack-test (>= 0.6.3)
18
+ rails-dom-testing (~> 2.2)
19
+ rails-html-sanitizer (~> 1.6)
20
+ useragent (~> 0.16)
21
+ actionview (7.2.0)
22
+ activesupport (= 7.2.0)
23
+ builder (~> 3.1)
24
+ erubi (~> 1.11)
25
+ rails-dom-testing (~> 2.2)
26
+ rails-html-sanitizer (~> 1.6)
27
+ activemodel (7.2.0)
28
+ activesupport (= 7.2.0)
29
+ activerecord (7.2.0)
30
+ activemodel (= 7.2.0)
31
+ activesupport (= 7.2.0)
32
+ timeout (>= 0.4.0)
33
+ activesupport (7.2.0)
34
+ base64
35
+ bigdecimal
36
+ concurrent-ruby (~> 1.0, >= 1.3.1)
37
+ connection_pool (>= 2.2.5)
38
+ drb
39
+ i18n (>= 1.6, < 2)
40
+ logger (>= 1.4.2)
41
+ minitest (>= 5.1)
42
+ securerandom (>= 0.3)
43
+ tzinfo (~> 2.0, >= 2.0.5)
44
+ appraisal (2.5.0)
45
+ bundler
46
+ rake
47
+ thor (>= 0.14.0)
48
+ ast (2.4.2)
49
+ base64 (0.2.0)
50
+ bigdecimal (3.1.8)
51
+ builder (3.3.0)
52
+ coderay (1.1.3)
53
+ combustion (1.5.0)
54
+ activesupport (>= 3.0.0)
55
+ railties (>= 3.0.0)
56
+ thor (>= 0.14.6)
57
+ concurrent-ruby (1.3.4)
58
+ connection_pool (2.4.1)
59
+ crass (1.0.6)
60
+ database_cleaner (2.0.2)
61
+ database_cleaner-active_record (>= 2, < 3)
62
+ database_cleaner-active_record (2.2.0)
63
+ activerecord (>= 5.a)
64
+ database_cleaner-core (~> 2.0.0)
65
+ database_cleaner-core (2.0.1)
66
+ diff-lcs (1.5.1)
67
+ docile (1.4.1)
68
+ drb (2.2.1)
69
+ erubi (1.13.0)
70
+ i18n (1.14.5)
71
+ concurrent-ruby (~> 1.0)
72
+ io-console (0.7.2)
73
+ irb (1.14.0)
74
+ rdoc (>= 4.0.0)
75
+ reline (>= 0.4.2)
76
+ json (2.7.2)
77
+ language_server-protocol (3.17.0.3)
78
+ logger (1.6.0)
79
+ loofah (2.22.0)
80
+ crass (~> 1.0.2)
81
+ nokogiri (>= 1.12.0)
82
+ method_source (1.1.0)
83
+ minitest (5.25.0)
84
+ nokogiri (1.16.7-x86_64-darwin)
85
+ racc (~> 1.4)
86
+ parallel (1.26.2)
87
+ parser (3.3.4.2)
88
+ ast (~> 2.4.1)
89
+ racc
90
+ pg (1.5.7)
91
+ pry (0.14.2)
92
+ coderay (~> 1.1)
93
+ method_source (~> 1.0)
94
+ psych (5.1.2)
95
+ stringio
96
+ racc (1.8.1)
97
+ rack (3.1.7)
98
+ rack-session (2.0.0)
99
+ rack (>= 3.0.0)
100
+ rack-test (2.1.0)
101
+ rack (>= 1.3)
102
+ rackup (2.1.0)
103
+ rack (>= 3)
104
+ webrick (~> 1.8)
105
+ rails-dom-testing (2.2.0)
106
+ activesupport (>= 5.0.0)
107
+ minitest
108
+ nokogiri (>= 1.6)
109
+ rails-html-sanitizer (1.6.0)
110
+ loofah (~> 2.21)
111
+ nokogiri (~> 1.14)
112
+ railties (7.2.0)
113
+ actionpack (= 7.2.0)
114
+ activesupport (= 7.2.0)
115
+ irb (~> 1.13)
116
+ rackup (>= 1.0.0)
117
+ rake (>= 12.2)
118
+ thor (~> 1.0, >= 1.2.2)
119
+ zeitwerk (~> 2.6)
120
+ rainbow (3.1.1)
121
+ rake (13.2.1)
122
+ rdoc (6.7.0)
123
+ psych (>= 4.0.0)
124
+ regexp_parser (2.9.2)
125
+ reline (0.5.9)
126
+ io-console (~> 0.5)
127
+ rexml (3.3.5)
128
+ strscan
129
+ rspec-core (3.13.0)
130
+ rspec-support (~> 3.13.0)
131
+ rspec-expectations (3.13.1)
132
+ diff-lcs (>= 1.2.0, < 2.0)
133
+ rspec-support (~> 3.13.0)
134
+ rspec-mocks (3.13.1)
135
+ diff-lcs (>= 1.2.0, < 2.0)
136
+ rspec-support (~> 3.13.0)
137
+ rspec-rails (6.1.4)
138
+ actionpack (>= 6.1)
139
+ activesupport (>= 6.1)
140
+ railties (>= 6.1)
141
+ rspec-core (~> 3.13)
142
+ rspec-expectations (~> 3.13)
143
+ rspec-mocks (~> 3.13)
144
+ rspec-support (~> 3.13)
145
+ rspec-support (3.13.1)
146
+ rubocop (1.65.1)
147
+ json (~> 2.3)
148
+ language_server-protocol (>= 3.17.0)
149
+ parallel (~> 1.10)
150
+ parser (>= 3.3.0.2)
151
+ rainbow (>= 2.2.2, < 4.0)
152
+ regexp_parser (>= 2.4, < 3.0)
153
+ rexml (>= 3.2.5, < 4.0)
154
+ rubocop-ast (>= 1.31.1, < 2.0)
155
+ ruby-progressbar (~> 1.7)
156
+ unicode-display_width (>= 2.4.0, < 3.0)
157
+ rubocop-ast (1.32.0)
158
+ parser (>= 3.3.1.0)
159
+ rubocop-capybara (2.21.0)
160
+ rubocop (~> 1.41)
161
+ rubocop-factory_bot (2.26.1)
162
+ rubocop (~> 1.61)
163
+ rubocop-rspec (2.31.0)
164
+ rubocop (~> 1.40)
165
+ rubocop-capybara (~> 2.17)
166
+ rubocop-factory_bot (~> 2.22)
167
+ rubocop-rspec_rails (~> 2.28)
168
+ rubocop-rspec_rails (2.29.1)
169
+ rubocop (~> 1.61)
170
+ ruby-progressbar (1.13.0)
171
+ securerandom (0.3.1)
172
+ simplecov (0.22.0)
173
+ docile (~> 1.1)
174
+ simplecov-html (~> 0.11)
175
+ simplecov_json_formatter (~> 0.1)
176
+ simplecov-html (0.12.3)
177
+ simplecov_json_formatter (0.1.4)
178
+ stringio (3.1.1)
179
+ strscan (3.1.0)
180
+ thor (1.3.1)
181
+ timeout (0.4.1)
182
+ tzinfo (2.0.6)
183
+ concurrent-ruby (~> 1.0)
184
+ unicode-display_width (2.5.0)
185
+ useragent (0.16.10)
186
+ webrick (1.8.1)
187
+ zeitwerk (2.6.17)
188
+
189
+ PLATFORMS
190
+ x86_64-darwin
191
+
192
+ DEPENDENCIES
193
+ activerecord (~> 7.2, < 8)
194
+ appraisal
195
+ bundler (~> 2)
196
+ combustion (~> 1.4)
197
+ database_cleaner (~> 2)
198
+ parentry!
199
+ pg (~> 1.5)
200
+ pry (~> 0.13)
201
+ rake (~> 13)
202
+ rspec-rails (~> 6.1)
203
+ rubocop-rspec (~> 2)
204
+ simplecov (~> 0.20)
205
+
206
+ BUNDLED WITH
207
+ 2.5.17
@@ -33,7 +33,7 @@ module Parentry
33
33
  end
34
34
 
35
35
  def leaf?
36
- children.size.zero?
36
+ children.empty?
37
37
  end
38
38
  alias childless? leaf?
39
39
 
@@ -46,7 +46,7 @@ module Parentry
46
46
  end
47
47
 
48
48
  def siblings
49
- parentry_scope.where.not(id: id).where.not(parent_id: nil).where(parent_id: parent_id)
49
+ parentry_scope.where.not(id:).where.not(parent_id: nil).where(parent_id:)
50
50
  end
51
51
 
52
52
  def siblings?
@@ -73,7 +73,7 @@ module Parentry
73
73
 
74
74
  def descendants(scopes = {})
75
75
  with_depth_scopes(scopes) do
76
- subtree.where.not(id: id)
76
+ subtree.where.not(id:)
77
77
  end
78
78
  end
79
79
 
@@ -3,7 +3,7 @@ module Parentry
3
3
  module Array
4
4
  module ClassMethods
5
5
  def parentry_depth_function
6
- Arel.sql("array_length(#{parentry_column}, 1)")
6
+ Arel::Nodes::NamedFunction.new('array_length', [arel_table[parentry_column], 1])
7
7
  end
8
8
  end
9
9
  end
@@ -15,7 +15,7 @@ module Parentry
15
15
  def cascade_parentry
16
16
  old_path, new_path = saved_changes[parentry_column]
17
17
  parentry_scope.where(
18
- ["#{parentry_column} @> ARRAY[:tree] AND id != :id", { tree: old_path, id: id }]
18
+ ["#{parentry_column} @> ARRAY[:tree] AND id != :id", { tree: old_path, id: }]
19
19
  ).update_all(
20
20
  [
21
21
  "#{parentry_column} = array_cat(ARRAY[?], #{parentry_column}[?:array_length(#{parentry_column}, 1)])",
@@ -3,7 +3,7 @@ module Parentry
3
3
  module Ltree
4
4
  module ClassMethods
5
5
  def parentry_depth_function
6
- Arel.sql("nlevel(#{parentry_column})")
6
+ Arel::Nodes::NamedFunction.new('nlevel', [arel_table[parentry_column]])
7
7
  end
8
8
  end
9
9
  end
@@ -13,11 +13,11 @@ module Parentry
13
13
  def cascade_parentry
14
14
  old_path, new_path = saved_changes[parentry_column]
15
15
  parentry_scope.where(
16
- ["#{parentry_column} <@ :tree AND id != :id", { tree: old_path, id: id }]
16
+ ["#{parentry_column} <@ :tree AND id != :id", { tree: old_path, id: }]
17
17
  ).update_all(
18
18
  [
19
19
  "#{parentry_column} = :new_path || subpath(#{parentry_column}, nlevel(:old_path))",
20
- { new_path: new_path, old_path: old_path }
20
+ { new_path:, old_path: }
21
21
  ]
22
22
  )
23
23
  end
@@ -1,3 +1,3 @@
1
1
  module Parentry
2
- VERSION = '1.5.0'.freeze
2
+ VERSION = '1.7.0'.freeze
3
3
  end
data/lib/parentry.rb CHANGED
@@ -39,13 +39,17 @@ module Parentry
39
39
 
40
40
  scope :order_by_parentry, -> { order(parentry_depth_function) }
41
41
 
42
- scope :before_depth, ->(depth) { where("#{parentry_depth_function} - 1 < ?", depth + depth_offset) }
43
- scope :to_depth, ->(depth) { where("#{parentry_depth_function} - 1 <= ?", depth + depth_offset) }
44
- scope :at_depth, ->(depth) { where("#{parentry_depth_function} - 1 = ?", depth + depth_offset) }
45
- scope :from_depth, ->(depth) { where("#{parentry_depth_function} - 1 >= ?", depth + depth_offset) }
46
- scope :after_depth, ->(depth) { where("#{parentry_depth_function} - 1 > ?", depth + depth_offset) }
42
+ {
43
+ before_depth: Arel::Nodes::LessThan,
44
+ to_depth: Arel::Nodes::LessThanOrEqual,
45
+ at_depth: Arel::Nodes::Equality,
46
+ from_depth: Arel::Nodes::GreaterThanOrEqual,
47
+ after_depth: Arel::Nodes::GreaterThan
48
+ }.each do |name, node|
49
+ scope name, ->(depth) { where(node.new(parentry_depth_function, depth + depth_offset + 1)) }
50
+ end
47
51
 
48
- scope :roots, -> { where("#{parentry_depth_function} = 1") }
52
+ scope :roots, -> { where(Arel::Nodes::Equality.new(parentry_depth_function, 1)) }
49
53
  scope :ancestors_of, ->(node) { where(node.ancestor_conditions).where.not(id: node.id) }
50
54
  scope :children_of, ->(node) { where(parent_id: node.id) }
51
55
  scope :descendants_of, ->(node) { subtree_of(node).where.not(id: node.id) }
data/parentry.gemspec CHANGED
@@ -15,17 +15,8 @@ Gem::Specification.new do |spec|
15
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
16
  spec.require_paths = ['lib']
17
17
 
18
- spec.required_ruby_version = '>= 2.5'
18
+ spec.required_ruby_version = '>= 3.1'
19
+ spec.metadata['rubygems_mfa_required'] = 'true'
19
20
 
20
- spec.add_dependency 'activerecord', '>= 5.1', '< 7.1'
21
-
22
- spec.add_development_dependency 'bundler', '~> 2'
23
- spec.add_development_dependency 'combustion', '~> 1.1'
24
- spec.add_development_dependency 'database_cleaner', '~> 1.6'
25
- spec.add_development_dependency 'pg', '~> 1.2'
26
- spec.add_development_dependency 'pry', '~> 0.13'
27
- spec.add_development_dependency 'rake', '~> 13'
28
- spec.add_development_dependency 'rspec-rails', '~> 4.0'
29
- spec.add_development_dependency 'rubocop-rspec', '~> 2.1'
30
- spec.add_development_dependency 'simplecov', '~> 0.20'
21
+ spec.add_dependency 'activerecord', '>= 6.1', '< 8'
31
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parentry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hamed Asghari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-19 00:00:00.000000000 Z
11
+ date: 2024-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,146 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '5.1'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
33
- - !ruby/object:Gem::Dependency
34
- name: bundler
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '2'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '2'
47
- - !ruby/object:Gem::Dependency
48
- name: combustion
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '1.1'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '1.1'
61
- - !ruby/object:Gem::Dependency
62
- name: database_cleaner
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '1.6'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1.6'
75
- - !ruby/object:Gem::Dependency
76
- name: pg
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.2'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.2'
89
- - !ruby/object:Gem::Dependency
90
- name: pry
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '0.13'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '0.13'
103
- - !ruby/object:Gem::Dependency
104
- name: rake
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '13'
110
- type: :development
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '13'
117
- - !ruby/object:Gem::Dependency
118
- name: rspec-rails
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '4.0'
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '4.0'
131
- - !ruby/object:Gem::Dependency
132
- name: rubocop-rspec
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '2.1'
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '2.1'
145
- - !ruby/object:Gem::Dependency
146
- name: simplecov
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '0.20'
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '0.20'
32
+ version: '8'
159
33
  description:
160
34
  email:
161
35
  - hasghari@gmail.com
@@ -176,16 +50,14 @@ files:
176
50
  - Rakefile
177
51
  - bin/console
178
52
  - bin/setup
179
- - gemfiles/activerecord_5.1.5.gemfile
180
- - gemfiles/activerecord_5.1.5.gemfile.lock
181
- - gemfiles/activerecord_5.2.0.gemfile
182
- - gemfiles/activerecord_5.2.0.gemfile.lock
183
- - gemfiles/activerecord_6.0.0.gemfile
184
- - gemfiles/activerecord_6.0.0.gemfile.lock
185
53
  - gemfiles/activerecord_6.1.0.gemfile
186
54
  - gemfiles/activerecord_6.1.0.gemfile.lock
187
55
  - gemfiles/activerecord_7.0.0.gemfile
188
56
  - gemfiles/activerecord_7.0.0.gemfile.lock
57
+ - gemfiles/activerecord_7.1.0.gemfile
58
+ - gemfiles/activerecord_7.1.0.gemfile.lock
59
+ - gemfiles/activerecord_7.2.0.gemfile
60
+ - gemfiles/activerecord_7.2.0.gemfile.lock
189
61
  - lib/parentry.rb
190
62
  - lib/parentry/class_methods.rb
191
63
  - lib/parentry/instance_methods.rb
@@ -202,7 +74,8 @@ files:
202
74
  homepage: https://github.com/hasghari/parentry
203
75
  licenses:
204
76
  - MIT
205
- metadata: {}
77
+ metadata:
78
+ rubygems_mfa_required: 'true'
206
79
  post_install_message:
207
80
  rdoc_options: []
208
81
  require_paths:
@@ -211,14 +84,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
84
  requirements:
212
85
  - - ">="
213
86
  - !ruby/object:Gem::Version
214
- version: '2.5'
87
+ version: '3.1'
215
88
  required_rubygems_version: !ruby/object:Gem::Requirement
216
89
  requirements:
217
90
  - - ">="
218
91
  - !ruby/object:Gem::Version
219
92
  version: '0'
220
93
  requirements: []
221
- rubygems_version: 3.2.32
94
+ rubygems_version: 3.5.11
222
95
  signing_key:
223
96
  specification_version: 4
224
97
  summary: ActiveRecord adapter for the Postgres ltree module
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "appraisal"
6
- gem "activerecord", "~> 5.1", "< 5.2"
7
-
8
- gemspec path: "../"