awesome_nested_set 3.6.0 → 3.8.0

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: 2c26151d6850942daadf3035ba6cbb20399efbe348ae4522cf897bb319e6f0de
4
- data.tar.gz: 667d9b0cbd91b90b7b7e8075481ba400c4ecbbd344b204908b2301d2daf690d7
3
+ metadata.gz: fc5b95f900dabff2e3702170dfd39f5822258e458457ff28d83df6dd80fa9e35
4
+ data.tar.gz: 0d27ac26d1be3a2bcaab77345fb98165f6b5596298e47c37fb2eb36fc93ebfe0
5
5
  SHA512:
6
- metadata.gz: 38de65793aacc7b68c542b16018a36bcfa9d65af9158d4126bc4ff25c0759531f8b9af605b2bf31894097935be97c15c6eee7ae72616ab56c6388844138558a3
7
- data.tar.gz: 319065889f794e1eec94cb8b1e0113dce515da6430401a20910479e1dd763bce238a31ae36cd957f690564bd42458877367b2dd45c3dbe2c2689c2ae550187df
6
+ metadata.gz: 86b1ec3f8cd1cdab75baaa05c6a29f749c8980cc9b4925f808d197d6404b9949d4c28023e9f2f459727263fdfdc654661c06193c571ce36955774656d647c03b
7
+ data.tar.gz: 2a6be508a72d1915ece979d3f18614a39dd6308970c71c50894125b6de5041bee983dbb66dc558ffe3e1fa718ea606063b49fd001f9ae5c944d2285eecbca04d
data/CHANGELOG CHANGED
@@ -1,5 +1,14 @@
1
1
  Unreleased version
2
2
 
3
+ 3.8.0
4
+ * Support Rails 8.0 [Takuya N](https://github.com/collectiveidea/awesome_nested_set/pull/487)
5
+ * Enable Rubygems Trusted Publishing
6
+
7
+ 3.7.0
8
+ * Teach #move_to_child_of and #move_to_child_with_index to accept :root as a parameter [Micah Geisel](https://github.com/botandrose)
9
+ * Add #roots method [Micah Geisel](https://github.com/botandrose)
10
+ * Support Rails 7.2 [Ahmed A. Ibrahim](https://github.com/AhmedAliIbrahim)
11
+
3
12
  3.6.0
4
13
  * Support Rails 7.1 [Harshal Bhakta](https://github.com/harshalbhakta)
5
14
  * Improve ImpossibleMove error message [AlejandroFernandesAntunes](https://github.com/AlejandroFernandesAntunes)
@@ -11,7 +11,7 @@ module CollectiveIdea #:nodoc:
11
11
  # You can pass a block receiving an item and returning the string displayed in the select.
12
12
  #
13
13
  # == Params
14
- # * +class_or_item+ - Class name or top level times
14
+ # * +class_or_items+ - Class name or top level items
15
15
  # * +mover+ - The item that is being move, used to exclude impossible moves
16
16
  # * +&block+ - a block that will be used to display: { |item| ... item.name }
17
17
  #
@@ -21,12 +21,12 @@ module CollectiveIdea #:nodoc:
21
21
  # "#{'–' * i.level} #{i.name}"
22
22
  # }) %>
23
23
  #
24
- def nested_set_options(class_or_item, mover = nil)
25
- if class_or_item.is_a? Array
26
- items = class_or_item.reject { |e| !e.root? }
24
+ def nested_set_options(class_or_items, mover = nil)
25
+ if class_or_items.is_a? Array
26
+ items = class_or_items.reject { |e| !e.root? }
27
27
  else
28
- class_or_item = class_or_item.roots if class_or_item.respond_to?(:scope)
29
- items = Array(class_or_item)
28
+ class_or_items = class_or_items.roots if class_or_items.respond_to?(:scope)
29
+ items = Array(class_or_items)
30
30
  end
31
31
  result = []
32
32
  items.each do |root|
@@ -36,26 +36,31 @@ module CollectiveIdea #:nodoc:
36
36
 
37
37
  # Move the node to the child of another node
38
38
  def move_to_child_of(node)
39
- move_to node, :child
39
+ if node == :root
40
+ move_to_root
41
+ else
42
+ move_to node, :child
43
+ end
40
44
  end
41
45
 
42
46
  # Move the node to the child of another node with specify index
43
47
  def move_to_child_with_index(node, index)
44
- if node.children.empty?
48
+ siblings = node == :root ? roots : node.children
49
+ if siblings.empty?
45
50
  move_to_child_of(node)
46
- elsif node.children.count == index
47
- move_to_right_of(node.children.last)
51
+ elsif siblings.count == index
52
+ move_to_right_of(siblings.last)
48
53
  else
49
- my_position = node.children.to_a.index(self)
54
+ my_position = siblings.index(self)
50
55
  if my_position && my_position < index
51
56
  # e.g. if self is at position 0 and we want to move self to position 1 then self
52
57
  # needs to move to the *right* of the node at position 1. That's because the node
53
58
  # that is currently at position 1 will be at position 0 after the move completes.
54
- move_to_right_of(node.children[index])
59
+ move_to_right_of(siblings[index])
55
60
  elsif my_position && my_position == index
56
61
  # do nothing. already there.
57
62
  else
58
- move_to_left_of(node.children[index])
63
+ move_to_left_of(siblings[index])
59
64
  end
60
65
  end
61
66
  end
@@ -35,9 +35,14 @@ module CollectiveIdea #:nodoc:
35
35
  end
36
36
  end
37
37
 
38
+ # Use reverse to delete from deepest child to parent in order to respect any possible foreign keys
39
+ def decendants_to_destroy_in_order
40
+ descendants.reverse
41
+ end
42
+
38
43
  def destroy_or_delete_descendants
39
44
  if acts_as_nested_set_options[:dependent] == :destroy
40
- descendants.each do |model|
45
+ decendants_to_destroy_in_order.each do |model|
41
46
  model.skip_before_destroy = true
42
47
  model.destroy
43
48
  end
@@ -93,6 +93,10 @@ module CollectiveIdea
93
93
  end
94
94
  end
95
95
 
96
+ def roots
97
+ nested_set_scope.where(parent_id: nil)
98
+ end
99
+
96
100
  protected
97
101
 
98
102
  def compute_level
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AwesomeNestedSet
4
- VERSION = '3.6.0' unless defined?(::AwesomeNestedSet::VERSION)
4
+ VERSION = '3.8.0' unless defined?(::AwesomeNestedSet::VERSION)
5
5
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesome_nested_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.0
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Keepers
8
8
  - Daniel Morrison
9
9
  - Philip Arndt
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-10-05 00:00:00.000000000 Z
13
+ date: 2024-11-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 4.0.0
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '7.2'
24
+ version: '8.1'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: 4.0.0
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '7.2'
34
+ version: '8.1'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: appraisal
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -106,16 +106,22 @@ dependencies:
106
106
  name: rspec-rails
107
107
  requirement: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - "~>"
109
+ - - ">="
110
110
  - !ruby/object:Gem::Version
111
111
  version: 4.0.0
112
+ - - "<"
113
+ - !ruby/object:Gem::Version
114
+ version: '8.0'
112
115
  type: :development
113
116
  prerelease: false
114
117
  version_requirements: !ruby/object:Gem::Requirement
115
118
  requirements:
116
- - - "~>"
119
+ - - ">="
117
120
  - !ruby/object:Gem::Version
118
121
  version: 4.0.0
122
+ - - "<"
123
+ - !ruby/object:Gem::Version
124
+ version: '8.0'
119
125
  description: An awesome nested set implementation for Active Record
120
126
  email: info@collectiveidea.com
121
127
  executables: []
@@ -146,7 +152,7 @@ homepage: https://github.com/collectiveidea/awesome_nested_set
146
152
  licenses:
147
153
  - MIT
148
154
  metadata: {}
149
- post_install_message:
155
+ post_install_message:
150
156
  rdoc_options:
151
157
  - "--main"
152
158
  - README.md
@@ -165,8 +171,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
171
  - !ruby/object:Gem::Version
166
172
  version: '0'
167
173
  requirements: []
168
- rubygems_version: 3.4.13
169
- signing_key:
174
+ rubygems_version: 3.5.22
175
+ signing_key:
170
176
  specification_version: 4
171
177
  summary: An awesome nested set implementation for Active Record
172
178
  test_files: []