apiql 0.2.0 → 0.2.1
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/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
|