yap 1.2.3 → 1.3.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: c2e584db111e849d65623c8f8066f18d3321eaec
4
- data.tar.gz: 6e0c33554f3fa5cb25ba1602440948cfe3a9593d
3
+ metadata.gz: f8a8cb98d770164d8c28e7b5ecb574a7962430fe
4
+ data.tar.gz: 3841588ca088dc11673d04a8d2a9e7c8aa1705cc
5
5
  SHA512:
6
- metadata.gz: 28e3430c741c61be7af6dbde3d33db86a3abb5c746e00d4a3d3cb8a48820045abb9dff45a10437b22cd0a88d8238ac670c660b859d79d6306d5db065c8cb5861
7
- data.tar.gz: 9c62745dc600bae81c2b1e233c88eacbe9dc9c22232857475ef839a86bc6db365137418878d4eba41268267adb3c65f7fce1ed83e88a26eef0a4ed34dea9f6bd
6
+ metadata.gz: 5ac5778aace7e20671a21195db90c12d2672e2de0e9244d063a429b1334b6ffefbd7791c0cb50ca75f8eb38b78a582449bdc9368077eddfdd4fe5df902d7e71b
7
+ data.tar.gz: 170f73e6b59ef73478fe75745336a53f1f8fa188a8aa613ae638ad97d5eff4837ef754ad39a302dcdadca32ad9dd5c3e3a6a3a5f937a8d8489c46be300190e85
data/README.md CHANGED
@@ -162,6 +162,15 @@ If an option cannot be parsed it will raise `Yap::PaginationError` or `Yap::Filt
162
162
 
163
163
  ## Changelog
164
164
 
165
+ ### 1.3
166
+
167
+ * added comparison operators <, >, <=, >= to filters
168
+ * usage: ?filter[id]=>=100
169
+ * will give you any element with and id equal to or greater 100
170
+ * you can even combine multiple filters: ?filter[id]=>=100,<200
171
+ * although the same result can be achieved through ?filter[id]=100...200
172
+ * _currently, there is not support for strings and dates. This will be implemented in the future_
173
+
165
174
  ### 1.2
166
175
 
167
176
  * added sorting by multiple elements
@@ -16,6 +16,8 @@ module Yap
16
16
  end
17
17
 
18
18
  case value
19
+ when /([<>]=?)(.+)/
20
+ match, value = handle_comparison_operators(match, column, $1.to_sym, $2)
19
21
  when /(.+)\.{3}(.+)/
20
22
  value = $1...$2
21
23
  when /(.+)\.{2}(.+)/
@@ -31,5 +33,27 @@ module Yap
31
33
  self[match][column] << value
32
34
  end
33
35
  end
36
+
37
+ private
38
+
39
+ def handle_comparison_operators(match, column, operator, value)
40
+ # TODO make comparison operators work for String. See here: http://c4se.hatenablog.com/entry/2013/10/01/010305
41
+ value = Float(value) rescue raise(Yap::FilterError, 'You can only use float values with comparison operators <, >, <= and >=.')
42
+
43
+ case operator
44
+ when :<
45
+ handle_comparison_operators(toggle_match(match), column, :>=, value)
46
+ when :>
47
+ handle_comparison_operators(toggle_match(match), column, :<=, value)
48
+ when :<=
49
+ return match, -Float::INFINITY..value.to_f
50
+ when :>=
51
+ return match, value.to_f..Float::INFINITY
52
+ end
53
+ end
54
+
55
+ def toggle_match(match)
56
+ match == :where ? :not : :where
57
+ end
34
58
  end
35
59
  end
@@ -1,3 +1,3 @@
1
1
  module Yap
2
- VERSION = '1.2.3'
2
+ VERSION = '1.3.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Finn Glöe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-07 00:00:00.000000000 Z
11
+ date: 2015-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  requirements: []
76
76
  rubyforge_project:
77
- rubygems_version: 2.4.6
77
+ rubygems_version: 2.4.8
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Yet another paginator for Ruby on Rails