standardapi 1.0.10 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/standard_api/orders.rb +37 -34
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3ef0a277d0306f9afa031a1bbbd80e7a36595b5
4
- data.tar.gz: 89adcb13d289d2ef7b4b7027d9385c50f3555e9c
3
+ metadata.gz: 7f3dd80946f83f6fd0512ec5a1b18053006c30ee
4
+ data.tar.gz: c0942e8eda944f221b15ba0fc39d897701128256
5
5
  SHA512:
6
- metadata.gz: b51fb68bea85b47d19549f567f5a3461de9d662633b973c93461f692ce660945d16cb6604dcf11b89db04bc1566c9a92269e477b494906c3f2ac96a6b42af1e9
7
- data.tar.gz: 554e724a84890ca9dc5d0d0c21e481c217e4b9384cc67ef624bed671e984baf2fc89d24fa9b5079ba18aeaf66b7474ffdc94b3270259ec8deec05f67129f60f8
6
+ metadata.gz: 3e268419011bfa400dee7027e2ac961069f8f4beefc28a90e5b441577914552f2c01d992d6ec95cb0e22057cef29de9997b76a07a69310c737f77825b538c4f8
7
+ data.tar.gz: a851e18f2e1491d0df72e8b5352da579ae59a4fd340617940e6609cac2a46fcaea75cdba7930b37328a1ecf4bc2f5bbfb3abc6be53d44b2d6c67b9d2ab624951
@@ -13,42 +13,43 @@ module StandardAPI
13
13
  # # ['listings.size', 'property.id'] => [{:listings => [:size]}, {:property => [:id]}]
14
14
  # # { 'size' => :asc, 'property.id' => :desc } => [{:size => :asc}, {:property => [{:id => :desc}]}]
15
15
  # # { :size => {:asc => :nulls_first}, 'property.id' => {:desc => :null_last} } => [{:size => {:asc => :nulls_first}}, {:property => [{:id => {:desc => :nulls_first}}]}]
16
- # def self.normalize(orderings)
17
- # return nil if orderings.nil?
18
- # orderings = orderings.is_a?(Array) ? orderings : [orderings]
19
- #
20
- # orderings.map! do |order|
21
- # case order
22
- # when Hash
23
- # normalized = ActiveSupport::HashWithIndifferentAccess.new
24
- # order.each do |key, value|
25
- # key = key.to_s
26
- # if key.index(".")
27
- # relation, column = key.split('.').map(&:to_sym)
28
- # normalized[relation] ||= []
29
- # normalized[relation] << { column => value }
30
- # elsif value.is_a?(Hash) && value.keys.first.to_s != 'desc' && value.keys.first.to_s != 'asc'
31
- # normalized[key.to_sym] ||= []
32
- # normalized[key.to_sym] << value
33
- # else
34
- # normalized[key.to_sym] = value
35
- # end
36
- # end
37
- # normalized
38
- # else
39
- # order = order.to_s
40
- # if order.index(".")
41
- # relation, column = order.split('.').map(&:to_sym)
42
- # { relation => [column] }
43
- # else
44
- # order.to_sym
45
- # end
46
- # end
47
- # end
48
- # end
16
+ def self.normalize(orderings)
17
+ return nil if orderings.nil?
18
+ orderings = orderings.is_a?(Array) ? orderings : [orderings]
19
+
20
+ orderings.map! do |order|
21
+ case order
22
+ when Hash
23
+ normalized = ActiveSupport::HashWithIndifferentAccess.new
24
+ order.each do |key, value|
25
+ key = key.to_s
26
+ if key.index(".")
27
+ relation, column = key.split('.').map(&:to_sym)
28
+ normalized[relation] ||= []
29
+ normalized[relation] << { column => value }
30
+ elsif value.is_a?(Hash) && value.keys.first.to_s != 'desc' && value.keys.first.to_s != 'asc'
31
+ normalized[key.to_sym] ||= []
32
+ normalized[key.to_sym] << value
33
+ else
34
+ normalized[key.to_sym] = value
35
+ end
36
+ end
37
+ normalized
38
+ else
39
+ order = order.to_s
40
+ if order.index(".")
41
+ relation, column = order.split('.').map(&:to_sym)
42
+ { relation => [column] }
43
+ else
44
+ order.to_sym
45
+ end
46
+ end
47
+ end
48
+ end
49
49
 
50
50
  def self.sanitize(orders, permit, normalized=false)
51
51
  return nil if orders.nil?
52
+ orders = StandardAPI::Orders.normalize(orders) if !normalized
52
53
 
53
54
  permit = [permit] if !permit.is_a?(Array)
54
55
  permit = permit.flatten.map { |x| x.is_a?(Hash) ? x.with_indifferent_access : x.to_s }
@@ -73,6 +74,8 @@ module StandardAPI
73
74
  else
74
75
  if permit.include?(orders.to_s)
75
76
  permitted = orders
77
+ # elsif permit.split('.').size == 2
78
+ # sanitize({permit.split('.')[0] => permit.split('.')[1]}, permit)
76
79
  else
77
80
  raise(ActionDispatch::ParamsParser::ParseError.new("Invalid Ordering #{orders.inspect}", nil))
78
81
  end
@@ -82,4 +85,4 @@ module StandardAPI
82
85
  end
83
86
 
84
87
  end
85
- end
88
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standardapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Bracy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-sort