apiql 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/apiql.gemspec +1 -1
- data/assets/javascripts/apiql.js +2 -0
- data/lib/apiql.rb +37 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d352e5c0593440e6f860500f9aff2e02238ff4ccd4cee8d4845eb80aa2301e95
|
4
|
+
data.tar.gz: 8600a0d3df1e54eac36e10d0898c151adbb53d771d2a09f50a6002899506ae28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0979ad9a4921e756a9e4251fe753002db11b2a3f769bb8274e45e1c44da9df64eda69d928ec72ae0666faa5c3347d779935f55134a6279b7dcd34e8f424b4e64'
|
7
|
+
data.tar.gz: 7d11f62c6ca0fee4236307a001c9038ef1e2191b72970644e90b8f6847f75f1e4b87430ded40faadddcf1bdcb6c7ec4c5d8157f9ed1265de261edf778b9fbc41
|
data/apiql.gemspec
CHANGED
data/assets/javascripts/apiql.js
CHANGED
data/lib/apiql.rb
CHANGED
@@ -87,7 +87,7 @@ class APIQL
|
|
87
87
|
keys.delete(last_key)
|
88
88
|
keys << { last_key => last_keys }
|
89
89
|
end
|
90
|
-
elsif function.present? && (reg = schema.match(/\A\s*(?<name
|
90
|
+
elsif function.present? && (reg = schema.match(/\A\s*(?<name>[\w\.]+)(\((?<params>.*)\))?(?<rest>.*)\z/m))
|
91
91
|
schema = reg[:rest]
|
92
92
|
|
93
93
|
if reg[:params].present?
|
@@ -97,7 +97,7 @@ class APIQL
|
|
97
97
|
end
|
98
98
|
|
99
99
|
last_key = reg[:name]
|
100
|
-
elsif reg = schema.match(/\A\s*(?<name
|
100
|
+
elsif reg = schema.match(/\A\s*(?<name>[\w\.]+)(\((?<params>((\w+)(\s*\,\s*\w+)*))?\))?\s*\{(?<rest>.*)\z/m)
|
101
101
|
schema = reg[:rest]
|
102
102
|
|
103
103
|
function = reg[:name]
|
@@ -112,7 +112,7 @@ class APIQL
|
|
112
112
|
|
113
113
|
pool.push [keys, last_key]
|
114
114
|
keys = []
|
115
|
-
elsif reg = schema.match(/\A\s*(?<name
|
115
|
+
elsif reg = schema.match(/\A\s*(?<name>[\w\.]+)(\((?<params>((\w+)(\s*\,\s*\w+)*))?\))?\s*\n?(?<rest>.*)\z/m)
|
116
116
|
schema = reg[:rest]
|
117
117
|
|
118
118
|
function = reg[:name]
|
@@ -195,12 +195,41 @@ class APIQL
|
|
195
195
|
field, params = field
|
196
196
|
params = @context.parse_params(params)
|
197
197
|
end
|
198
|
-
return unless field.to_sym.in? self.class.apiql_attributes
|
199
198
|
|
200
|
-
|
201
|
-
|
199
|
+
names = field.split('.')
|
200
|
+
if names.count > 1
|
201
|
+
o = nil
|
202
|
+
|
203
|
+
names.each do |field|
|
204
|
+
if o.present?
|
205
|
+
if o.respond_to? field
|
206
|
+
o = o.public_send(field, *params)
|
207
|
+
else
|
208
|
+
o = nil
|
209
|
+
break
|
210
|
+
end
|
211
|
+
else
|
212
|
+
return unless field.to_sym.in? self.class.apiql_attributes
|
213
|
+
|
214
|
+
if respond_to? field
|
215
|
+
o = public_send(field, *params)
|
216
|
+
else
|
217
|
+
o = object.public_send(field, *params)
|
218
|
+
end
|
219
|
+
|
220
|
+
break unless o.present?
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
o
|
202
225
|
else
|
203
|
-
|
226
|
+
return unless field.to_sym.in? self.class.apiql_attributes
|
227
|
+
|
228
|
+
if respond_to? field
|
229
|
+
public_send(field, *params)
|
230
|
+
else
|
231
|
+
object.public_send(field, *params)
|
232
|
+
end
|
204
233
|
end
|
205
234
|
end
|
206
235
|
|
@@ -262,7 +291,7 @@ class APIQL
|
|
262
291
|
|
263
292
|
def parse_params(list)
|
264
293
|
list&.split(',')&.map(&:strip)&.map do |name|
|
265
|
-
if reg = name.match(/\A[a-zA-
|
294
|
+
if reg = name.match(/\A[a-zA-Z_]\w*\z/)
|
266
295
|
params[name]
|
267
296
|
else
|
268
297
|
begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apiql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Silchenko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|