query_filters 0.1.0 → 0.2.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 +4 -4
- data/README.md +8 -8
- data/Rakefile +5 -4
- data/lib/query_filters/parser.rb +6 -0
- data/lib/query_filters/query.rb +1 -0
- data/lib/query_filters/version.rb +1 -1
- data/lib/query_filters.rb +3 -0
- data/query_filters.gemspec +2 -2
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5385e549bd5b1d0d1f2f00a1e4fa50aff65faa9aa10bab4a721438fc8cff8543
|
4
|
+
data.tar.gz: 9ef158597791824b4486d4cfb1662b478014765c071d6f0e182109d19abc871b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23278b8374d3d8d68a24f4d94d5c5a2c71fd3b6c695c1b22ae4a197057858423498d963d32308f5438a222b5cee11abc080af7df87b5d56a5772ff812e8a79ec
|
7
|
+
data.tar.gz: d4403b5294c833a7090743948b1a1f4bc6c07d1de9474d9175ef666c569eca55b7a6cf674d0432ecb65c73c0e9a23fac634f4ee01b9ad24ed4c076a245082da3
|
data/README.md
CHANGED
@@ -20,25 +20,25 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
```
|
23
|
+
```ruby
|
24
24
|
QueryFilters.parse('date_gteq=20-11-2018,date_lteq=20-12-2018')
|
25
25
|
```
|
26
26
|
|
27
27
|
Produces:
|
28
28
|
|
29
|
-
```
|
29
|
+
```ruby
|
30
30
|
{ date_gteq: '20-11-2018', date_lteq: '20-12-2018' }
|
31
31
|
```
|
32
32
|
|
33
33
|
### Nested params
|
34
34
|
|
35
|
-
```
|
36
|
-
QueryFilters.parse('date_gteq=20-11-2018,date_lteq=20-12-2018,posts:title=what about dogs,posts:order=
|
35
|
+
```ruby
|
36
|
+
QueryFilters.parse('date_gteq=20-11-2018,date_lteq=20-12-2018,posts:title=what about dogs,posts:order=date_desc')
|
37
37
|
```
|
38
38
|
|
39
39
|
Produces:
|
40
40
|
|
41
|
-
```
|
41
|
+
```ruby
|
42
42
|
{
|
43
43
|
date_gteq: '20-11-2018',
|
44
44
|
date_lteq: '20-12-2018',
|
@@ -50,8 +50,8 @@ Produces:
|
|
50
50
|
|
51
51
|
You can configure parser through options:
|
52
52
|
|
53
|
-
```
|
54
|
-
QueryFilters.parse('posts/title
|
53
|
+
```ruby
|
54
|
+
QueryFilters.parse('posts/title:what about dogs;posts/order:title_desc',
|
55
55
|
nesting_separator: '/',
|
56
56
|
assignment_separator: ':',
|
57
57
|
filters_separator: ';',
|
@@ -61,7 +61,7 @@ QueryFilters.parse('posts/title=what about dogs;posts/order=title_desc',
|
|
61
61
|
|
62
62
|
Produces:
|
63
63
|
|
64
|
-
```
|
64
|
+
```ruby
|
65
65
|
{"posts"=>{"title"=>"what about dogs", "order"=>"title_desc"}}
|
66
66
|
```
|
67
67
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require "rspec/core/rake_task"
|
1
|
+
require 'bundler/gem_tasks'
|
3
2
|
|
4
|
-
|
3
|
+
task default: :test
|
5
4
|
|
6
|
-
task :
|
5
|
+
task :test do
|
6
|
+
Dir.glob('./test/*_test.rb').shuffle.each { |file| require file }
|
7
|
+
end
|
data/lib/query_filters/parser.rb
CHANGED
@@ -22,6 +22,7 @@ module QueryFilters
|
|
22
22
|
parse
|
23
23
|
end
|
24
24
|
|
25
|
+
# @return [self]
|
25
26
|
def parse
|
26
27
|
@filters = query_string.split(options[:filters_separator]).map do |filter|
|
27
28
|
parse_filter(filter)
|
@@ -29,6 +30,7 @@ module QueryFilters
|
|
29
30
|
self
|
30
31
|
end
|
31
32
|
|
33
|
+
# @return [Hash]
|
32
34
|
def to_hash
|
33
35
|
filters_hash = {}
|
34
36
|
filters.each { |filter| filters_hash.deep_merge!(filter) }
|
@@ -37,6 +39,8 @@ module QueryFilters
|
|
37
39
|
|
38
40
|
private
|
39
41
|
|
42
|
+
# @param filter [String]
|
43
|
+
# @return [Hash]
|
40
44
|
def parse_filter(filter)
|
41
45
|
key, value = split_filter(filter)
|
42
46
|
keys = key.split(options[:nesting_separator])
|
@@ -46,10 +50,12 @@ module QueryFilters
|
|
46
50
|
nested_hash_from_array(keys + [value])
|
47
51
|
end
|
48
52
|
|
53
|
+
# @return [Array<String>]
|
49
54
|
def split_filter(filter)
|
50
55
|
filter.split(options[:assignment_separator])
|
51
56
|
end
|
52
57
|
|
58
|
+
# @return [Hash]
|
53
59
|
def nested_hash_from_array(array)
|
54
60
|
if array.size == 1
|
55
61
|
array.first
|
data/lib/query_filters/query.rb
CHANGED
data/lib/query_filters.rb
CHANGED
data/query_filters.gemspec
CHANGED
@@ -39,6 +39,6 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_dependency 'activesupport', '>= 4.0'
|
40
40
|
|
41
41
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
42
|
-
spec.add_development_dependency 'rake', '
|
43
|
-
spec.add_development_dependency 'minitest'
|
42
|
+
spec.add_development_dependency 'rake', '>= 13.0'
|
43
|
+
spec.add_development_dependency 'minitest', '~> 5.14'
|
44
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: query_filters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Besedin
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '5.14'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '5.14'
|
69
69
|
description: Parse filters (or something else) from pretty human readable query string
|
70
70
|
to hash
|
71
71
|
email:
|
@@ -94,7 +94,7 @@ metadata:
|
|
94
94
|
homepage_uri: https://github.com/kressh/query_filters.git
|
95
95
|
source_code_uri: https://github.com/kressh/query_filters.git
|
96
96
|
changelog_uri: https://github.com/kressh/query_filters/master/tree/CHANGELOG.md
|
97
|
-
post_install_message:
|
97
|
+
post_install_message:
|
98
98
|
rdoc_options: []
|
99
99
|
require_paths:
|
100
100
|
- lib
|
@@ -109,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
requirements: []
|
112
|
-
rubygems_version: 3.
|
113
|
-
signing_key:
|
112
|
+
rubygems_version: 3.2.14
|
113
|
+
signing_key:
|
114
114
|
specification_version: 4
|
115
115
|
summary: Parse filters (or something else) from pretty human readable query string
|
116
116
|
to hash
|