narabikae 0.2.0 → 0.2.1

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: 96e657bcc111a885f21934870ac5360490aa4999b6df0533af524f761ecd9244
4
- data.tar.gz: d7eca3f77b6260eea610bb5f5dbcdd71099972f74cd88028d00c5a266bd32667
3
+ metadata.gz: 07a44a8622d1ba78a90fa807d5947713bb47fdff0cb644973d8a5657ce37d453
4
+ data.tar.gz: 17dc1892a77e52ea46b6753cd621d5a0fb9f45ffd2c1ab0adbbac138063437ed
5
5
  SHA512:
6
- metadata.gz: e0bcec0651250189dcdac6c724bccf994d98350d4668e543dab8e039cc3f5ecd2891961ba2ecaa3d9bcd198094968137d4d5fb8215f7da692a849496b310cec7
7
- data.tar.gz: 90aa217d0d397c49452febff37a6153ffc10c2f309de27348482b1f28a3dac58440306001f2110eb70c3fa063e1d3e2789846b4c5fe0377750c84260b70a2e2b
6
+ metadata.gz: 3a459cabd5079dd5c308726e40ad42fdcbe082e6b266e94220d27cf336f3b62da6d5aba39df39c443079533509a31c20ff7b5ebffca2bfc25dece8e340f6ef7f
7
+ data.tar.gz: 9875163ef2ef2ffb5f48ffde782883b215875c498ef214027be373a88ac6789f8f172db6480ac50eb4e44804da4b9cdc1bfacefcbadfef57d5f41c2b5c1558f5
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Narabikae
2
2
 
3
+ [![test](https://github.com/kazu-2020/narabikae/actions/workflows/ci.yaml/badge.svg?branch=main&event=push)](https://github.com/kazu-2020/narabikae/actions/workflows/ci.yaml)
4
+
3
5
  Narabikae(Japanese: 並び替え) means "reorder". Like [acts_as_list](https://github.com/brendon/acts_as_list), this gem provides automatic order management and reordering functionality for your records.
4
6
 
5
7
  One of the key advantages of this gem is its use of the [fractional indexing algorithm](https://www.figma.com/blog/realtime-editing-of-ordered-sequences/#fractional-indexing), which greatly enhances the efficiency of reordering operations. With Narabikae, regardless of the amount of data, "only a single record" is updated during the reordering process 🎉.
@@ -79,7 +81,7 @@ Task.create([
79
81
  { name: 'task-3' }
80
82
  ])
81
83
  Task.order(:position).pluck(:name, :position)
82
- # => [["task-1", "a0"], ["task-3", "a1"], ["task-1", "a2"]]
84
+ # => [["task-1", "a0"], ["task-2", "a1"], ["task-3", "a2"]]
83
85
 
84
86
  ```
85
87
 
@@ -28,12 +28,12 @@ module Narabikae
28
28
  def find_position_after(target, **args)
29
29
  merged_args = { challenge: 10 }.merge(args)
30
30
  # when target is nil, try to generate key from the last position
31
- key = FractionalIndexer.generate_key(
32
- prev_key: target&.send(option.field) || current_last_position
33
- )
31
+ target_key = target&.send(option.field) || current_last_position
32
+ key = FractionalIndexer.generate_key(prev_key: target_key)
34
33
  return key if valid?(key)
35
34
 
36
- (merged_args[:challenge] || 0).times do
35
+ (merged_args[:challenge] || 0).times do |i|
36
+ key = FractionalIndexer.generate_key(prev_key: target_key, next_key: key)
37
37
  key += random_fractional
38
38
  return key if valid?(key)
39
39
  end
@@ -60,12 +60,12 @@ module Narabikae
60
60
  def find_position_before(target, **args)
61
61
  merged_args = { challenge: 10 }.merge(args)
62
62
  # when target is nil, try to generate key from the first position
63
- key = FractionalIndexer.generate_key(
64
- next_key: target&.send(option.field) || current_first_position
65
- )
63
+ target_key = target&.send(option.field) || current_first_position
64
+ key = FractionalIndexer.generate_key(next_key: target_key)
66
65
  return key if valid?(key)
67
66
 
68
- (merged_args[:challenge] || 0).times do
67
+ (merged_args[:challenge] || 0).times do |i|
68
+ key = FractionalIndexer.generate_key(prev_key: key, next_key: target_key)
69
69
  key += random_fractional
70
70
  return key if valid?(key)
71
71
  end
@@ -95,7 +95,8 @@ module Narabikae
95
95
  )
96
96
  return key if valid?(key)
97
97
 
98
- (merged_args[:challenge] || 0).times do
98
+ (merged_args[:challenge] || 0).times do |i|
99
+ key = FractionalIndexer.generate_key(prev_key: key, next_key: next_key)
99
100
  key += random_fractional
100
101
  return key if valid?(key)
101
102
  end
@@ -1,3 +1,3 @@
1
1
  module Narabikae
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: narabikae
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - matazou
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-10-02 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: fractional_indexer
@@ -16,84 +15,98 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '0'
18
+ version: 0.4.0
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '0'
25
+ version: 0.4.0
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: activerecord
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
32
+ version: '6.1'
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
39
+ version: '6.1'
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: activesupport
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '0'
46
+ version: '6.1'
48
47
  type: :runtime
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: '0'
53
+ version: '6.1'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: rspec-rails
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - ">="
60
59
  - !ruby/object:Gem::Version
61
- version: 5.0.0
60
+ version: '0'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - ">="
67
66
  - !ruby/object:Gem::Version
68
- version: 5.0.0
67
+ version: '0'
69
68
  - !ruby/object:Gem::Dependency
70
69
  name: rubocop-rails-omakase
71
70
  requirement: !ruby/object:Gem::Requirement
72
71
  requirements:
73
- - - ">="
72
+ - - "~>"
74
73
  - !ruby/object:Gem::Version
75
- version: '0'
74
+ version: 1.0.0
76
75
  type: :development
77
76
  prerelease: false
78
77
  version_requirements: !ruby/object:Gem::Requirement
79
78
  requirements:
80
- - - ">="
79
+ - - "~>"
81
80
  - !ruby/object:Gem::Version
82
- version: '0'
81
+ version: 1.0.0
83
82
  - !ruby/object:Gem::Dependency
84
83
  name: rubocop-rspec
85
84
  requirement: !ruby/object:Gem::Requirement
86
85
  requirements:
87
- - - ">="
86
+ - - "~>"
88
87
  - !ruby/object:Gem::Version
89
- version: '0'
88
+ version: 3.1.0
90
89
  type: :development
91
90
  prerelease: false
92
91
  version_requirements: !ruby/object:Gem::Requirement
93
92
  requirements:
94
- - - ">="
93
+ - - "~>"
95
94
  - !ruby/object:Gem::Version
96
- version: '0'
95
+ version: 3.1.0
96
+ - !ruby/object:Gem::Dependency
97
+ name: appraisal
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 2.5.0
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '='
108
+ - !ruby/object:Gem::Version
109
+ version: 2.5.0
97
110
  description: 'provides functionality similar to acts_as_list. However, by managing
98
111
  position using a fractional indexing system, it allows database record updates during
99
112
  reordering to be completed with only a single update (N = 1)!
@@ -125,7 +138,6 @@ metadata:
125
138
  source_code_uri: https://github.com/kazu-2020/narabikae
126
139
  allowed_push_host: https://rubygems.org/
127
140
  rubygems_mfa_required: 'true'
128
- post_install_message:
129
141
  rdoc_options: []
130
142
  require_paths:
131
143
  - lib
@@ -133,15 +145,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
145
  requirements:
134
146
  - - ">="
135
147
  - !ruby/object:Gem::Version
136
- version: '0'
148
+ version: '3.0'
137
149
  required_rubygems_version: !ruby/object:Gem::Requirement
138
150
  requirements:
139
151
  - - ">="
140
152
  - !ruby/object:Gem::Version
141
153
  version: '0'
142
154
  requirements: []
143
- rubygems_version: 3.5.9
144
- signing_key:
155
+ rubygems_version: 3.6.7
145
156
  specification_version: 4
146
157
  summary: provides simple position management and sorting functionality for Active
147
158
  Record in Rails.