query_filters 0.1.0 → 0.2.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
  SHA256:
3
- metadata.gz: 6aee43e678bb4ae2a21c29cc93d3931b1f7f8cd8519a8b46560796c4c8f106c0
4
- data.tar.gz: c266c3f356d6ffe661c196ad021e08248c49c4f22dbbc6056ec909dc4d86864b
3
+ metadata.gz: 5385e549bd5b1d0d1f2f00a1e4fa50aff65faa9aa10bab4a721438fc8cff8543
4
+ data.tar.gz: 9ef158597791824b4486d4cfb1662b478014765c071d6f0e182109d19abc871b
5
5
  SHA512:
6
- metadata.gz: 5b3bb31bb4f553d91b2d1c968312890cf7b57a96533257d8875f9cf615f74e2ed2f3df9aff89706d2949b351665adfd352b9d7595db642b38210b85f3f6fa083
7
- data.tar.gz: 64c810e03fd7556422261404fa4e209dcd2a7f3779466640073ab1fd026e0d834a88681b65b23869c1a1250cfb865839fc7de14270d7b65e4a5feef10852ea33
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=title_desc')
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=what about dogs;posts/order=title_desc',
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 "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
3
2
 
4
- RSpec::Core::RakeTask.new(:spec)
3
+ task default: :test
5
4
 
6
- task :default => :spec
5
+ task :test do
6
+ Dir.glob('./test/*_test.rb').shuffle.each { |file| require file }
7
+ end
@@ -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
@@ -13,6 +13,7 @@ module QueryFilters
13
13
  @query_string = query_string
14
14
  end
15
15
 
16
+ # @return [QueryFilters::Parser]
16
17
  def parser
17
18
  Parser.new(self, options)
18
19
  end
@@ -1,3 +1,3 @@
1
1
  module QueryFilters
2
- VERSION = "0.1.0"
2
+ VERSION = '0.2.0'.freeze
3
3
  end
data/lib/query_filters.rb CHANGED
@@ -6,6 +6,9 @@ require 'query_filters/query'
6
6
  module QueryFilters
7
7
  class ParseError < StandardError; end
8
8
 
9
+ # @param query [String]
10
+ # @param options [Hash]
11
+ # @return [Hash]
9
12
  def self.parse(query, options = {})
10
13
  Query.new(query, options).to_hash
11
14
  end
@@ -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', '~> 10.0'
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.1.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: 2019-04-02 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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: '0'
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: '0'
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.0.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