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