muster 0.0.9 → 0.0.10
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 +7 -0
- data/Authors +1 -0
- data/Changes +4 -0
- data/lib/muster/strategies/active_record.rb +15 -3
- data/lib/muster/version.rb +1 -1
- data/spec/muster/strategies/active_record_spec.rb +13 -4
- metadata +24 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 99866bb235ad97109e1b1a3d2cf79d83c24c8f80
|
4
|
+
data.tar.gz: 21cd93ae1d09692932c1acb43ffd7800bbc9e3a6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0e2332f2f2b14034b6298c8803277565c0820ce1f878c7526567d018cacf53d17183c44203ca622bf4565087d56c45ef3888bcf2aabeb0c607c0dcad28612d7c
|
7
|
+
data.tar.gz: 63d92c6acdb5e31848d4a0d3292eb26b2507da6f8d0123f73a776f81ef4065befee3c0175c14050c792c1a140a008c3468b7c650f41dabc5c0e0adb4ddad33b1
|
data/Authors
CHANGED
data/Changes
CHANGED
@@ -29,7 +29,7 @@ module Muster
|
|
29
29
|
# @return [Muster::Results]
|
30
30
|
#
|
31
31
|
# @example
|
32
|
-
#
|
32
|
+
#
|
33
33
|
# results = strategy.parse('select=id,name&where=status:new&order=name:desc')
|
34
34
|
#
|
35
35
|
# # { 'select' => ['id', 'name'], :where => {'status' => 'new}, :order => 'name desc' }
|
@@ -97,12 +97,14 @@ module Muster
|
|
97
97
|
def parse_pagination( query_string )
|
98
98
|
strategy = Muster::Strategies::Pagination.new(:fields => [:pagination, :limit, :offset])
|
99
99
|
results = strategy.parse(query_string)
|
100
|
-
|
100
|
+
|
101
101
|
return results
|
102
102
|
end
|
103
103
|
|
104
104
|
# Returns where clauses for AR queries
|
105
105
|
#
|
106
|
+
# - In the case a NULL or NIL query string value is included (case insensitive), a `nil` object is substituted for the String value.
|
107
|
+
#
|
106
108
|
# @param query_string [String] the original query string to parse where statements from
|
107
109
|
#
|
108
110
|
# @return [Hash]
|
@@ -110,10 +112,20 @@ module Muster
|
|
110
112
|
# @example
|
111
113
|
#
|
112
114
|
# value = self.parse_where('where=id:1') #=> {'id' => '1'}
|
115
|
+
# value = self.parse_where('where=id:null') #=> {'id' => nil}
|
116
|
+
# value = self.parse_where('where=id:nil') #=> {'id' => nil}
|
113
117
|
def parse_where( query_string )
|
114
118
|
strategy = Muster::Strategies::FilterExpression.new(:field => :where)
|
115
119
|
results = strategy.parse(query_string)
|
116
120
|
|
121
|
+
nil_regex = /^(null|nil)$/i
|
122
|
+
|
123
|
+
if results[:where] && !results[:where].values.grep(nil_regex).empty?
|
124
|
+
results[:where].each do |key, value|
|
125
|
+
results[:where][key] = nil if value.match(nil_regex)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
117
129
|
return results[:where] || {}
|
118
130
|
end
|
119
131
|
|
@@ -132,7 +144,7 @@ module Muster
|
|
132
144
|
|
133
145
|
return results[:joins] || {}
|
134
146
|
end
|
135
|
-
|
147
|
+
|
136
148
|
# Returns includes clauses for AR queries
|
137
149
|
#
|
138
150
|
# @param query_string [String] the original query string to parse join statements from
|
data/lib/muster/version.rb
CHANGED
@@ -53,7 +53,7 @@ describe Muster::Strategies::ActiveRecord do
|
|
53
53
|
it 'returns single value in Array' do
|
54
54
|
subject.parse('joins=author')[:joins].should eq ['author']
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it 'returns multiple values in Array' do
|
58
58
|
subject.parse('joins=author,voter')[:joins].should eq ['author', 'voter']
|
59
59
|
end
|
@@ -61,7 +61,7 @@ describe Muster::Strategies::ActiveRecord do
|
|
61
61
|
it 'returns a nested hash of separated values' do
|
62
62
|
subject.parse('joins=author.country.name')[:joins].should eq [{'author' => { 'country' => 'name'}}]
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
it 'returns an array of nested hashes' do
|
66
66
|
subject.parse('joins=author.country.name,activity.rule')[:joins].should eq [{'author' => { 'country' => 'name'}}, {'activity' => 'rule'}]
|
67
67
|
end
|
@@ -71,7 +71,7 @@ describe Muster::Strategies::ActiveRecord do
|
|
71
71
|
it 'returns single value in Array' do
|
72
72
|
subject.parse('includes=author')[:includes].should eq ['author']
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
it 'returns multiple values in Array' do
|
76
76
|
subject.parse('includes=author,voter')[:includes].should eq ['author', 'voter']
|
77
77
|
end
|
@@ -79,7 +79,7 @@ describe Muster::Strategies::ActiveRecord do
|
|
79
79
|
it 'returns a nested hash of separated values' do
|
80
80
|
subject.parse('includes=author.country.name')[:includes].should eq [{'author' => { 'country' => 'name'}}]
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
it 'returns an array of nested hashes' do
|
84
84
|
subject.parse('includes=author.country.name,activity.rule')[:includes].should eq [{'author' => { 'country' => 'name'}}, {'activity' => 'rule'}]
|
85
85
|
end
|
@@ -139,6 +139,15 @@ describe Muster::Strategies::ActiveRecord do
|
|
139
139
|
subject.parse('where=id:1')[:where].should == {'id' => '1'}
|
140
140
|
end
|
141
141
|
|
142
|
+
it 'returns a single value as nil in a hash' do
|
143
|
+
subject.parse('where=id:null')[:where].should == {'id' => nil}
|
144
|
+
subject.parse('where=id:NULL')[:where].should == {'id' => nil}
|
145
|
+
subject.parse('where=id:Null')[:where].should == {'id' => nil}
|
146
|
+
subject.parse('where=id:nil')[:where].should == {'id' => nil}
|
147
|
+
subject.parse('where=id:NIL')[:where].should == {'id' => nil}
|
148
|
+
subject.parse('where=id:Nil')[:where].should == {'id' => nil}
|
149
|
+
end
|
150
|
+
|
142
151
|
it 'returns values as an Array in a hash' do
|
143
152
|
subject.parse('where=id:1&where=id:2')[:where].should == {'id' => ['1', '2']}
|
144
153
|
end
|
metadata
CHANGED
@@ -1,126 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.10
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Christopher H. Laco
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-08-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activesupport
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '3.0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rack
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - ~>
|
31
|
+
- - "~>"
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '1.4'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - ~>
|
38
|
+
- - "~>"
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '1.4'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: pry
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- - ~>
|
59
|
+
- - "~>"
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 2.11.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- - ~>
|
66
|
+
- - "~>"
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 2.11.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: redcarpet
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- - ~>
|
73
|
+
- - "~>"
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '2.1'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- - ~>
|
80
|
+
- - "~>"
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '2.1'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: simplecov
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: yard
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- - ~>
|
101
|
+
- - "~>"
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: 0.8.2
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- - ~>
|
108
|
+
- - "~>"
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: 0.8.2
|
126
111
|
description: Muster is a gem that turns query strings of varying formats into data
|
@@ -131,9 +116,9 @@ executables: []
|
|
131
116
|
extensions: []
|
132
117
|
extra_rdoc_files: []
|
133
118
|
files:
|
134
|
-
- .gitignore
|
135
|
-
- .rspec
|
136
|
-
- .yardopts
|
119
|
+
- ".gitignore"
|
120
|
+
- ".rspec"
|
121
|
+
- ".yardopts"
|
137
122
|
- Authors
|
138
123
|
- Changes
|
139
124
|
- Gemfile
|
@@ -164,27 +149,26 @@ files:
|
|
164
149
|
- spec/spec_helper.rb
|
165
150
|
homepage: https://github.com/claco/muster
|
166
151
|
licenses: []
|
152
|
+
metadata: {}
|
167
153
|
post_install_message:
|
168
154
|
rdoc_options: []
|
169
155
|
require_paths:
|
170
156
|
- lib
|
171
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
172
|
-
none: false
|
173
158
|
requirements:
|
174
|
-
- -
|
159
|
+
- - ">="
|
175
160
|
- !ruby/object:Gem::Version
|
176
161
|
version: '0'
|
177
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
-
none: false
|
179
163
|
requirements:
|
180
|
-
- -
|
164
|
+
- - ">="
|
181
165
|
- !ruby/object:Gem::Version
|
182
166
|
version: '0'
|
183
167
|
requirements: []
|
184
168
|
rubyforge_project:
|
185
|
-
rubygems_version:
|
169
|
+
rubygems_version: 2.4.6
|
186
170
|
signing_key:
|
187
|
-
specification_version:
|
171
|
+
specification_version: 4
|
188
172
|
summary: Muster various query string formats into a more reusable data structure.
|
189
173
|
test_files:
|
190
174
|
- spec/muster/rack_spec.rb
|