sortabl 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3163242a1ee21d16b4f2d609b1182db106d3e9cf
4
- data.tar.gz: 7999c7735d164568cc38ef9232910ce1b06e7d00
3
+ metadata.gz: a6c4af3f0e56418608ff656d0f7b6ab202a36ef5
4
+ data.tar.gz: a33bedac5421960f53ee0f27b8dc75bac744592d
5
5
  SHA512:
6
- metadata.gz: 687800544182c04f1ec55eb4d0f8e5049b93948b567abaaf2e63baf5279862624b0c5e55cae3df7a479b19fc1c3466460550583267fc3e9575d7b1e0247df96c
7
- data.tar.gz: 1518453eda7a21079422cac19d96246e172bf61405a91d46a787a1ef0890c3385b59b46960b2ecc8b3e492897de251e45c4b35829c418d1ee511f1802972d671
6
+ metadata.gz: 67ce18ed70f06f3b3469245e7e080439005d667dbc5fbeea7358e46fb8341ae0570252203761646734622662d7ecd39d3a10cbf5522dd0a40f7cd3c56bd72d12
7
+ data.tar.gz: 4d8334f0ce2a0ac8bd694a6c5bfaf9dcef4d60e3f241eef3087f53cf64f82254f68ae1bad46b7993417bd57c9795a73eca5ef4e119b7166607a43a495027888e
data/README.md CHANGED
@@ -17,19 +17,19 @@ gem 'sortabl'
17
17
  #### Default
18
18
 
19
19
  ```ruby
20
- @posts = Post.sortabl(sort_by: params[:sortabl])
20
+ @posts = Post.sortabl(params[:sortabl])
21
21
  ```
22
22
 
23
23
  And that's it! Records will be sorted by permitted parameter `:sortabl`. If parameter `:sortabl` isn't permitted, records will be sorted by primary key. If you don't want to sort by primary key as default, you can set another one by:
24
24
 
25
25
  ```ruby
26
- @posts = Post.sortabl(sort_by: params[:sortabl], default: 'author asc')
26
+ @posts = Post.sortabl(params[:sortabl], default: [author: :asc])
27
27
  ```
28
28
 
29
29
  Even default multiple columns sort is possible:
30
30
 
31
31
  ```ruby
32
- @posts = Post.sortabl(sort_by: params[:sortabl], default: [author: :asc, created_at: :desc])
32
+ @posts = Post.sortabl(params[:sortabl], default: [author: :asc, created_at: :desc])
33
33
  ```
34
34
 
35
35
  #### Limeted Attributes
@@ -38,9 +38,9 @@ Permitted values can be an attribute of model class, followed by `_asc` or `_des
38
38
  If there's an attribute permitted which doesn't exist in model, it falls back to sort by `default` key. Attributes can be limited with `only` and `except`. For example:
39
39
 
40
40
  ```ruby
41
- @posts = Post.sortabl(sort_by: params[:sortabl], only: [:title, :author])
41
+ @posts = Post.sortabl(params[:sortabl], only: [:title, :author])
42
42
  # or
43
- @posts = Post.sortabl(sort_by: params[:sortabl], except: [:text])
43
+ @posts = Post.sortabl(params[:sortabl], except: [:text])
44
44
  ```
45
45
 
46
46
 
@@ -92,7 +92,7 @@ By default, `sortabl_link` will generate `:sortabl` as parameter into the url. I
92
92
  <%= sortabl_link 'Author', :author, sort_param: :my_custom_sort_param %>
93
93
 
94
94
  # In controller
95
- @posts = Post.sortabl(sort_by: params[:my_custom_sort_param], only: [:title, :author])
95
+ @posts = Post.sortabl(params[:my_custom_sort_param], only: [:title, :author])
96
96
  ```
97
97
 
98
98
  Which hyperlink will be rendered, depends on permitted values.
@@ -4,37 +4,34 @@ module Sortabl
4
4
 
5
5
  extend ActiveSupport::Concern
6
6
 
7
- # class Base
8
7
  module ClassMethods
9
8
 
10
- def sortabl *args
9
+ def sortabl parameter, *args
10
+
11
11
  # Init
12
- default = args[0][:default]
13
- only = args[0][:only]
14
- except = args[0][:except]
15
- parameter = args[0][:sort_by]
12
+ unless args.empty?
13
+ default = args[0][:default]
14
+ only = args[0][:only]
15
+ except = args[0][:except]
16
+ end
16
17
 
17
- raise "Invalid Parameters: Do not use 'only' and 'except' together!" if only.present? and except.present?
18
+ raise ArgumentError.new("Invalid Parameters: Do not use 'only' and 'except' together!") if only.present? and except.present?
18
19
 
19
20
  # Set default order attribute
20
21
  # default:
21
- #
22
22
  order_by_default = default.present? ? default : self.primary_key
23
23
 
24
24
  # Extract column name and direction from parameter
25
- #
26
25
  if parameter.present?
27
- column_name = parameter.gsub(/(_asc$|_desc$)/, '')
28
- direction = parameter.gsub(/^((?!desc$|asc$).)*/, '')
26
+ column_name = parameter.to_s.gsub(/(_asc$|_desc$)/, '')
27
+ direction = parameter.to_s.gsub(/^((?!desc$|asc$).)*/, '')
29
28
 
30
29
  # Sort by default if column_name is not included in only or column_name is included in except
31
- #
32
30
  return order((order_by_default)) if only.present? and !only.include? column_name.to_sym
33
31
  return order((order_by_default)) if except.present? and except.include? column_name.to_sym
34
32
  end
35
33
 
36
34
  # Convert param_value to symbol
37
- #
38
35
  sort_column = { column_name.to_sym => direction.to_sym } if column_name.present? and direction.present?
39
36
 
40
37
  # Order class object
@@ -45,4 +42,4 @@ module Sortabl
45
42
 
46
43
  end
47
44
  end
48
- end
45
+ end
@@ -1,3 +1,3 @@
1
1
  module Sortabl
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sortabl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederic Walch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-16 00:00:00.000000000 Z
11
+ date: 2016-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '4.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: actionview
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement