mongoid_orderable 5.0.0 → 5.1.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
  SHA1:
3
- metadata.gz: a966ef4b59309d05845a832163936ce54e339a1e
4
- data.tar.gz: 16b32ccd0fdb0a2ae9a61424d8842de9eba00d4e
3
+ metadata.gz: 7eaa2e05f5a3531b345dde5acd84bba859f71cc0
4
+ data.tar.gz: 8cbe732f1b5b60e66d9dad58a904e0157f8ef987
5
5
  SHA512:
6
- metadata.gz: ee3e6de12801d857bb9345dc6035c698c56ee119f9b2e78fc15584caf6108351904487b888fa2091636bc750be62e6076b06bf74f38f44b2bd2fa68bc36611ac
7
- data.tar.gz: 5fc8fe3f744fff60b38ac3d0136dcc5c84c069042beda3a7c623c9d6da743e67219e29da920bd983d4a5f506f081cbac9614e14630647dbc58593fa3dfb877d9
6
+ metadata.gz: 874989f19ae666bf7777379f45640686f457b101b5e04fdded8867c3403f7de79383b30448df6fdcbab491f0640dd5a73eb03e9a503568205a3bd4b00b050f3a
7
+ data.tar.gz: bacd372ac1644e959e668e1064fa771a3cae60c427c67f217ece8fdf5408cbc5d1d0ad97745e06905237deba44e30eb843c42527017f527a36cbd5ef3b0b5a9f
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ Exclude:
3
+ - vendor/**/*
4
+ - bin/**/*
5
+
6
+ inherit_from: .rubocop_todo.yml
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,88 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-11-21 14:00:35 -0500 using RuboCop version 0.45.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 1
10
+ Lint/AmbiguousOperator:
11
+ Exclude:
12
+ - 'lib/mongoid_orderable/mongoid/contextual/memory.rb'
13
+
14
+ # Offense count: 3
15
+ Metrics/AbcSize:
16
+ Max: 34
17
+
18
+ # Offense count: 1
19
+ # Configuration parameters: CountComments.
20
+ Metrics/BlockLength:
21
+ Max: 51
22
+
23
+ # Offense count: 2
24
+ Metrics/CyclomaticComplexity:
25
+ Max: 10
26
+
27
+ # Offense count: 96
28
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives.
29
+ # URISchemes: http, https
30
+ Metrics/LineLength:
31
+ Max: 134
32
+
33
+ # Offense count: 6
34
+ # Configuration parameters: CountComments.
35
+ Metrics/MethodLength:
36
+ Max: 17
37
+
38
+ # Offense count: 1
39
+ Metrics/PerceivedComplexity:
40
+ Max: 10
41
+
42
+ # Offense count: 1
43
+ Style/AccessorMethodName:
44
+ Exclude:
45
+ - 'lib/mongoid/orderable/configuration.rb'
46
+
47
+ # Offense count: 3
48
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
49
+ # SupportedStyles: nested, compact
50
+ Style/ClassAndModuleChildren:
51
+ Exclude:
52
+ - 'lib/mongoid/orderable.rb'
53
+ - 'lib/mongoid/orderable/errors/invalid_target_position.rb'
54
+ - 'lib/mongoid/orderable/errors/mongoid_orderable_error.rb'
55
+
56
+ # Offense count: 17
57
+ Style/Documentation:
58
+ Exclude:
59
+ - 'spec/**/*'
60
+ - 'test/**/*'
61
+ - 'lib/mongoid/orderable.rb'
62
+ - 'lib/mongoid/orderable/callbacks.rb'
63
+ - 'lib/mongoid/orderable/configuration.rb'
64
+ - 'lib/mongoid/orderable/errors/invalid_target_position.rb'
65
+ - 'lib/mongoid/orderable/generator.rb'
66
+ - 'lib/mongoid/orderable/generator/helpers.rb'
67
+ - 'lib/mongoid/orderable/generator/listable.rb'
68
+ - 'lib/mongoid/orderable/generator/movable.rb'
69
+ - 'lib/mongoid/orderable/generator/position.rb'
70
+ - 'lib/mongoid/orderable/generator/scope.rb'
71
+ - 'lib/mongoid/orderable/helpers.rb'
72
+ - 'lib/mongoid/orderable/listable.rb'
73
+ - 'lib/mongoid/orderable/movable.rb'
74
+ - 'lib/mongoid/orderable/orderable_class.rb'
75
+ - 'lib/mongoid_orderable.rb'
76
+
77
+ # Offense count: 2
78
+ # Cop supports --auto-correct.
79
+ # Configuration parameters: AllowAsExpressionSeparator.
80
+ Style/Semicolon:
81
+ Exclude:
82
+ - 'spec/mongoid/orderable_spec.rb'
83
+
84
+ # Offense count: 37
85
+ # Configuration parameters: SupportedStyles.
86
+ # SupportedStyles: snake_case, normalcase, non_integer
87
+ Style/VariableNumber:
88
+ EnforcedStyle: normalcase
data/.travis.yml CHANGED
@@ -1,14 +1,33 @@
1
+ sudo: false
2
+
3
+ language: ruby
4
+
5
+ cache: bundler
6
+
7
+ services: mongodb
8
+
1
9
  rvm:
2
- - 1.9.3
3
- - 2.0.0
4
- - 2.1
5
- - 2.2
6
- # - rbx
10
+ - 2.3.1
7
11
 
8
12
  env:
9
- - MONGOID_VERSION=2
10
13
  - MONGOID_VERSION=3
11
14
  - MONGOID_VERSION=4
12
15
  - MONGOID_VERSION=5
16
+ - MONGOID_VERSION=HEAD
13
17
 
14
- services: mongodb
18
+ before_install:
19
+ - gem update bundler
20
+
21
+ before_script:
22
+ - bundle exec danger
23
+
24
+ addons:
25
+ apt:
26
+ sources:
27
+ - mongodb-3.2-precise
28
+ packages:
29
+ - mongodb-org-server
30
+
31
+ matrix:
32
+ allow_failures:
33
+ - env: MONGOID_VERSION=HEAD
data/CHANGELOG.md CHANGED
@@ -1,22 +1,53 @@
1
- # master
1
+ ### 5.1.0 (2017/06/04)
2
2
 
3
- # 5.0.0
3
+ * [#50](https://github.com/mongoid/mongoid_orderable/pull/50): Added Danger, PR linter - [@dblock](https://github.com/dblock).
4
+ * [#51](https://github.com/mongoid/mongoid_orderable/pull/51): Added RuboCop - [@dblock](https://github.com/dblock).
5
+ * [#49](https://github.com/mongoid/mongoid_orderable/pull/49): Fix orderable on embedded documents inside an inherited model - [@rafaelgaspar](https://github.com/rafaelgaspar).
4
6
 
5
- * Mongoid 5 support (@dblock)
6
- * Ruby 1.8 support dropped
7
+ ### 5.0.0 (2015/10/21)
7
8
 
8
- # 4.1.1
9
+ * [#41](https://github.com/mongoid/mongoid_orderable/pull/41): Mongoid 5 support - [@dblock](https://github.com/dblock).
10
+ * [#41](https://github.com/mongoid/mongoid_orderable/pull/41): Dropped support for ruby 1.8 - [@dblock](https://github.com/dblock).
9
11
 
10
- * Fix: index should respect scope (@joeyAghion)
12
+ ### 4.1.1 (2014/12/19)
11
13
 
12
- # 4.1.0
14
+ * [#34](https://github.com/mongoid/mongoid_orderable/pull/34): Fix: index should respect scope - [@joeyAghion](https://github.com/joeyAghion).
13
15
 
14
- * Resolving scope foreign key form passed relation name (@dsci)
15
- * Fix: relation metadata quering (@pjkelly)
16
- * `previous_items` and `next_items` methods (@mrjlynch)
16
+ ### 4.1.0 (2014/3/19)
17
17
 
18
- # 4.0.0
18
+ * [#30](https://github.com/mongoid/mongoid_orderable/pull/30): Fix: reset a single column when `orderable_scope` changed instead of removing it from list - [@Bharat311](https://github.com/Bharat311).
19
+ * [#29](https://github.com/mongoid/mongoid_orderable/pull/29): Fix: incorrect position when orderable base is set - [@Bharat311](https://github.com/Bharat311).
20
+ * [#28](https://github.com/mongoid/mongoid_orderable/pull/28): Inherited `orderable_configurations` - [@johnny-miyake](https://github.com/johnny-miyake).
21
+ * [#27](https://github.com/mongoid/mongoid_orderable/pull/27): Allowed numeric string to specify a target position - [@johnny-miyake](https://github.com/johnny-miyake).
22
+ * [#26](https://github.com/mongoid/mongoid_orderable/pull/26): Added support for multiple orderable columns - [@Bharat311](https://github.com/Bharat311).
23
+ * [#22](https://github.com/mongoid/mongoid_orderable/pull/22): Added lazy support for scopes with different foreign key names - [@dsci](https://github.com/dsci).
24
+ * [#21](https://github.com/mongoid/mongoid_orderable/pull/21): Accounting for change in Mongoid's metadata API - [@pjkelly](https://github.com/pjkelly).
25
+ * [#20](https://github.com/mongoid/mongoid_orderable/pull/20): Added next and previous item methods - [@mrjlynch](https://github.com/mrjlynch).
26
+ * [#19](https://github.com/mongoid/mongoid_orderable/pull/19): Added lower and higher item methods - [@mrjlynch](https://github.com/mrjlynch).
19
27
 
20
- * Semantic versioning
21
- * Added Mongoid 4 support (@dblock)
22
- * Fixes by @johnnyshields and @zhengjia
28
+ ### 4.0.0 (2013/10/22)
29
+
30
+ * [#18](https://github.com/mongoid/mongoid_orderable/pull/18): Added Mongoid 4 support - [@dblock](https://github.com/dblock).
31
+ * [#16](https://github.com/mongoid/mongoid_orderable/pull/16): Fix for Mongoid identity map combined with scoped orderable - [@johnnyshields](https://github.com/johnnyshields).
32
+ * [#15](https://github.com/mongoid/mongoid_orderable/pull/15): Support pass-thru of Mongoid field alias (`:as` parameter) - [@johnnyshields](https://github.com/johnnyshields).
33
+ * [#13](https://github.com/mongoid/mongoid_orderable/pull/13): Support inheritance - [@zhengjia](https://github.com/zhengjia).
34
+
35
+ ### 1.2.0 (2013/1/10)
36
+
37
+ * [#12](https://github.com/mongoid/mongoid_orderable/pull/12): Added support for "base" in config options, in order to do a zero-based position - [@johnnyshields](https://github.com/johnnyshields).
38
+
39
+ ### 1.1.0 (2012/5/23)
40
+
41
+ * Added Mongoid 3 support - [@pyromaniac](https://github.com/pyromaniac).
42
+
43
+ ### 1.0.0 (2012/2/14)
44
+
45
+ * [#5](https://github.com/mongoid/mongoid_orderable/pull/5): Allow for use with default scopes - [@mattiassvedhem](https://github.com/mattiassvedhem).
46
+
47
+ ### 0.9.1 (2012/2/3)
48
+
49
+ ### 0.9.0 (2011/11/23)
50
+
51
+ ### 0.0.1 (2011/11/1)
52
+
53
+ * Initial public release - [@pyromaniac](https://github.com/pyromaniac).
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,118 @@
1
+ Contributing to Mongoid::Orderable
2
+ ==================================
3
+
4
+ Mongoid::Orderable is work of [many of contributors](https://github.com/mongoid/mongoid_orderable/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/mongoid/mongoid_orderable/pulls), [propose features, ask questions and discuss issues](https://github.com/mongoid/mongoid_orderable/issues).
5
+
6
+ #### Fork the Project
7
+
8
+ Fork the [project on Github](https://github.com/mongoid/mongoid_orderable) and check out your copy.
9
+
10
+ ```
11
+ git clone https://github.com/contributor/mongoid_orderable.git
12
+ cd mongoid_orderable
13
+ git remote add upstream https://github.com/mongoid/mongoid_orderable.git
14
+ ```
15
+
16
+ #### Create a Topic Branch
17
+
18
+ Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.
19
+
20
+ ```
21
+ git checkout master
22
+ git pull upstream master
23
+ git checkout -b my-feature-branch
24
+ ```
25
+
26
+ #### Bundle Install and Test
27
+
28
+ Ensure that you can build the project and run tests.
29
+
30
+ ```
31
+ bundle install
32
+ bundle exec rake
33
+ ```
34
+
35
+ #### Write Tests
36
+
37
+ Try to write a test that reproduces the problem you're trying to fix or describes a feature that you want to build. Add to [spec/mongoid_orderable](spec/mongoid_orderable).
38
+
39
+ We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.
40
+
41
+ #### Write Code
42
+
43
+ Implement your feature or bug fix.
44
+
45
+ Ruby style is enforced with [Rubocop](https://github.com/bbatsov/rubocop), run `bundle exec rubocop` and fix any style issues highlighted.
46
+
47
+ Make sure that `bundle exec rake` completes without errors.
48
+
49
+ #### Write Documentation
50
+
51
+ Document any external behavior in the [README](README.md).
52
+
53
+ #### Update Changelog
54
+
55
+ Add a line to [CHANGELOG](CHANGELOG.md) under *Next Release*. Make it look like every other line, including your name and link to your Github account.
56
+
57
+ #### Commit Changes
58
+
59
+ Make sure git knows your name and email address:
60
+
61
+ ```
62
+ git config --global user.name "Your Name"
63
+ git config --global user.email "contributor@example.com"
64
+ ```
65
+
66
+ Writing good commit logs is important. A commit log should describe what changed and why.
67
+
68
+ ```
69
+ git add ...
70
+ git commit
71
+ ```
72
+
73
+ #### Push
74
+
75
+ ```
76
+ git push origin my-feature-branch
77
+ ```
78
+
79
+ #### Make a Pull Request
80
+
81
+ Go to https://github.com/contributor/mongoid_orderable and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.
82
+
83
+ #### Rebase
84
+
85
+ If you've been working on a change for a while, rebase with upstream/master.
86
+
87
+ ```
88
+ git fetch upstream
89
+ git rebase upstream/master
90
+ git push origin my-feature-branch -f
91
+ ```
92
+
93
+ #### Update CHANGELOG Again
94
+
95
+ Update the [CHANGELOG](CHANGELOG.md) with the pull request number. A typical entry looks as follows.
96
+
97
+ ```
98
+ * [#123](https://github.com/mongoid/mongoid_orderable/pull/123): Reticulated splines - [@contributor](https://github.com/contributor).
99
+ ```
100
+
101
+ Amend your previous commit and force push the changes.
102
+
103
+ ```
104
+ git commit --amend
105
+ git push origin my-feature-branch -f
106
+ ```
107
+
108
+ #### Check on Your Pull Request
109
+
110
+ Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.
111
+
112
+ #### Be Patient
113
+
114
+ It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there!
115
+
116
+ #### Thank You
117
+
118
+ Please do know that we really appreciate and value your time and work. We love you, really.
data/Dangerfile ADDED
@@ -0,0 +1 @@
1
+ danger.import_dangerfile(gem: 'mongoid-danger')
data/Gemfile CHANGED
@@ -1,18 +1,22 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in mongoid_orderable.gemspec
4
4
  gemspec
5
5
 
6
6
  case version = ENV['MONGOID_VERSION'] || '5.0'
7
+ when 'HEAD'
8
+ gem 'mongoid', github: 'mongodb/mongoid'
7
9
  when /^5/
8
10
  gem 'mongoid', '~> 5.0'
9
11
  when /^4/
10
12
  gem 'mongoid', '~> 4.0'
11
13
  when /^3/
12
14
  gem 'mongoid', '~> 3.1'
13
- when /^2/
14
- gem 'mongoid', '~> 2.0'
15
- gem 'bson_ext', platforms: :ruby
16
15
  else
17
16
  gem 'mongoid', version
18
17
  end
18
+
19
+ group :test do
20
+ gem 'rubocop', '0.45.0'
21
+ gem 'mongoid-danger', '~> 0.1.0', require: false
22
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011-2016 Arkadiy Zabazhanov & Contributors
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/mongoid_orderable.svg)](https://badge.fury.io/rb/mongoid_orderable)
2
- [![Build Status](https://travis-ci.org/pyromaniac/mongoid_orderable.svg?branch=master)](https://travis-ci.org/pyromaniac/mongoid_orderable)
2
+ [![Build Status](https://travis-ci.org/mongoid/mongoid_orderable.svg?branch=master)](https://travis-ci.org/mongoid/mongoid_orderable)
3
3
 
4
4
  # What?
5
5
 
@@ -142,8 +142,10 @@ To ensure the position is written correctly, you will need to provide the cascad
142
142
 
143
143
  # Contributing
144
144
 
145
- Fork && Patch && Spec && Push && Pull request.
145
+ See [CONTRIBUTING](CONTRIBUTING.md).
146
146
 
147
- # License
147
+ # Copyright & License
148
148
 
149
- Mongoid::Orderable is released under the MIT license.
149
+ Copyright (c) 2011-2016 Arkadiy Zabazhanov & Contributors.
150
+
151
+ MIT license, see [LICENSE](LICENSE.txt) for details.
data/RELEASING.md ADDED
@@ -0,0 +1,68 @@
1
+ Releasing Mongoid::Orderable
2
+ ============================
3
+
4
+ There're no particular rules about when to release mongoid_orderable. Release bug fixes frequently, features not so frequently and breaking API changes rarely.
5
+
6
+ ### Release
7
+
8
+ Run tests, check that all tests succeed locally.
9
+
10
+ ```
11
+ bundle install
12
+ rake
13
+ ```
14
+
15
+ Check that the last build succeeded in [Travis CI](https://travis-ci.org/mongoid/mongoid_orderable) for all supported platforms.
16
+
17
+ Increment the version, modify [lib/mongoid_orderable/version.rb](lib/mongoid_orderable/version.rb).
18
+
19
+ * Increment the third number if the release has bug fixes and/or very minor features, only (eg. change `0.5.1` to `0.5.2`).
20
+ * Increment the second number if the release contains major features or breaking API changes (eg. change `0.5.1` to `0.4.0`).
21
+
22
+ Change "Next Release" in [CHANGELOG.md](CHANGELOG.md) to the new version.
23
+
24
+ ```
25
+ ### 0.4.0 (2014-01-27)
26
+ ```
27
+
28
+ Remove the line with "Your contribution here.", since there will be no more contributions to this release.
29
+
30
+ Commit your changes.
31
+
32
+ ```
33
+ git add CHANGELOG.md lib/mongoid_orderable/version.rb
34
+ git commit -m "Preparing for release, 0.4.0."
35
+ git push origin master
36
+ ```
37
+
38
+ Release.
39
+
40
+ ```
41
+ $ rake release
42
+
43
+ mongoid_orderable 0.4.0 built to pkg/mongoid_orderable-0.4.0.gem.
44
+ Tagged v0.4.0.
45
+ Pushed git commits and tags.
46
+ Pushed mongoid_orderable 0.4.0 to rubygems.org.
47
+ ```
48
+
49
+ ### Prepare for the Next Version
50
+
51
+ Add the next release to [CHANGELOG.md](CHANGELOG.md).
52
+
53
+ ```
54
+ Next Release
55
+ ============
56
+
57
+ * Your contribution here.
58
+ ```
59
+
60
+ Increment the minor version, modify [lib/mongoid_orderable/version.rb](lib/mongoid_orderable/version.rb).
61
+
62
+ Commit your changes.
63
+
64
+ ```
65
+ git add CHANGELOG.md lib/mongoid_orderable/version.rb
66
+ git commit -m "Preparing for next release, 0.4.1."
67
+ git push origin master
68
+ ```
data/Rakefile CHANGED
@@ -1,6 +1,21 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler'
2
+ begin
3
+ Bundler.setup(:default, :development)
4
+ rescue Bundler::BundlerError => e
5
+ $stderr.puts e.message
6
+ $stderr.puts 'Run `bundle install` to install missing gems'
7
+ exit e.status_code
8
+ end
3
9
 
4
- RSpec::Core::RakeTask.new(:spec)
10
+ Bundler::GemHelper.install_tasks
5
11
 
6
- task :default => [ :spec ]
12
+ require 'rspec/core'
13
+ require 'rspec/core/rake_task'
14
+ RSpec::Core::RakeTask.new(:spec) do |spec|
15
+ spec.pattern = FileList['spec/**/*_spec.rb']
16
+ end
17
+
18
+ require 'rubocop/rake_task'
19
+ RuboCop::RakeTask.new(:rubocop)
20
+
21
+ task default: [:rubocop, :spec]
@@ -4,64 +4,68 @@ module Mongoid
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
-
8
7
  protected
9
8
 
10
9
  def add_to_list
11
- self.orderable_keys.each do |column|
10
+ orderable_keys.each do |column|
12
11
  apply_position column, move_all[column]
13
12
  end
14
13
  end
15
14
 
16
15
  def remove_from_list
17
- self.orderable_keys.each do |column|
16
+ orderable_keys.each do |column|
18
17
  remove_position_from_list column
19
18
  end
20
19
  end
21
20
 
22
21
  def remove_position_from_list(column)
23
- col, pos = orderable_column(column), orderable_position(column)
22
+ col = orderable_column(column)
23
+ pos = orderable_position(column)
24
24
  MongoidOrderable.inc orderable_scoped(column).where(col.gt => pos), col, -1
25
25
  end
26
26
 
27
- def apply_position column, target_position
27
+ def apply_position(column, target_position)
28
28
  if persisted? && !embedded? && orderable_scope_changed?(column)
29
29
  self.class.unscoped.find(_id).remove_position_from_list(column)
30
- self.send("orderable_#{column}_position=", nil)
30
+ send("orderable_#{column}_position=", nil)
31
31
  end
32
32
 
33
33
  return if !target_position && in_list?(column)
34
34
 
35
35
  target_position = target_position_to_position column, target_position
36
- scope, col, pos = orderable_scoped(column), orderable_column(column), orderable_position(column)
36
+ scope = orderable_scoped(column)
37
+ col = orderable_column(column)
38
+ pos = orderable_position(column)
37
39
 
38
- unless in_list?(column)
40
+ if !in_list?(column)
39
41
  MongoidOrderable.inc scope.where(col.gte => target_position), col, 1
40
- else
41
- MongoidOrderable.inc(scope.where(col.gte => target_position, col.lt => pos), col, 1) if target_position < pos
42
- MongoidOrderable.inc(scope.where(col.gt => pos, col.lte => target_position), col, -1) if target_position > pos
42
+ elsif target_position < pos
43
+ MongoidOrderable.inc(scope.where(col.gte => target_position, col.lt => pos), col, 1)
44
+ elsif target_position > pos
45
+ MongoidOrderable.inc(scope.where(col.gt => pos, col.lte => target_position), col, -1)
43
46
  end
44
47
 
45
- self.send("orderable_#{column}_position=", target_position)
48
+ send("orderable_#{column}_position=", target_position)
46
49
  end
47
50
 
48
- def target_position_to_position column, target_position
51
+ def target_position_to_position(column, target_position)
49
52
  target_position = :bottom unless target_position
50
53
 
51
- target_position = case target_position.to_s
52
- when 'top' then orderable_base(column)
53
- when 'bottom' then bottom_orderable_position(column)
54
- when 'higher' then orderable_position(column).pred
55
- when 'lower' then orderable_position(column).next
56
- when /\A\d+\Z/ then target_position.to_i
57
- else raise Mongoid::Orderable::Errors::InvalidTargetPosition.new target_position
58
- end unless target_position.is_a? Numeric
54
+ unless target_position.is_a? Numeric
55
+ target_position = case target_position.to_s
56
+ when 'top' then orderable_base(column)
57
+ when 'bottom' then bottom_orderable_position(column)
58
+ when 'higher' then orderable_position(column).pred
59
+ when 'lower' then orderable_position(column).next
60
+ when /\A\d+\Z/ then target_position.to_i
61
+ else raise Mongoid::Orderable::Errors::InvalidTargetPosition, target_position
62
+ end
63
+ end
59
64
 
60
65
  target_position = orderable_base(column) if target_position < orderable_base(column)
61
66
  target_position = bottom_orderable_position(column) if target_position > bottom_orderable_position(column)
62
67
  target_position
63
68
  end
64
-
65
69
  end
66
70
 
67
71
  module ClassMethods
@@ -1,7 +1,6 @@
1
1
  module Mongoid
2
2
  module Orderable
3
3
  class Configuration
4
-
5
4
  CONFIG_OPTIONS = %w(column scope foreign_key inherited base index default).map(&:to_sym)
6
5
  FIELD_OPTIONS = %w(as).map(&:to_sym)
7
6
  VALID_OPTIONS = CONFIG_OPTIONS + FIELD_OPTIONS
@@ -16,11 +15,11 @@ module Mongoid
16
15
  end
17
16
 
18
17
  def default_configuration
19
- { :column => :position,
20
- :index => true,
21
- :scope => nil,
22
- :base => 1,
23
- :field_opts => { :type => Integer }}
18
+ { column: :position,
19
+ index: true,
20
+ scope: nil,
21
+ base: 1,
22
+ field_opts: { type: Integer } }
24
23
  end
25
24
 
26
25
  def self.build(parent, options = {})
@@ -37,7 +36,7 @@ module Mongoid
37
36
 
38
37
  def set_field_options
39
38
  FIELD_OPTIONS.each do |key|
40
- next unless options.has_key? key
39
+ next unless options.key? key
41
40
  @options[:field_opts][key] = options.delete(key)
42
41
  end
43
42
  end
@@ -45,16 +44,15 @@ module Mongoid
45
44
  def set_orderable_scope
46
45
  if options[:scope].is_a?(Symbol) && options[:scope].to_s !~ /_id$/
47
46
  scope_relation = @orderable_class.relations[options[:scope].to_s]
48
- if scope_relation
49
- @options[:scope] = scope_relation.key.to_sym
50
- else
51
- @options[:scope] = "#{options[:scope]}_id".to_sym
52
- end
47
+ @options[:scope] = if scope_relation
48
+ scope_relation.key.to_sym
49
+ else
50
+ "#{options[:scope]}_id".to_sym
51
+ end
53
52
  elsif options[:scope].is_a?(String)
54
53
  @options[:scope] = options[:scope].to_sym
55
54
  end
56
55
  end
57
-
58
56
  end
59
57
  end
60
58
  end