standardapi 1.0.10 → 1.0.11

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.
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