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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: def514d5f185be467c6fe1d3cb0a45f1713ff47950d366f40c4830268064cf6b
4
- data.tar.gz: 6e23322d7c596b40ebd2740bdd3e98ec961b88f1d2825bec8ecc829bb01e63b8
3
+ metadata.gz: d352e5c0593440e6f860500f9aff2e02238ff4ccd4cee8d4845eb80aa2301e95
4
+ data.tar.gz: 8600a0d3df1e54eac36e10d0898c151adbb53d771d2a09f50a6002899506ae28
5
5
  SHA512:
6
- metadata.gz: 5c4253fe05c60846ddb813e7c09ef431d6d21d6574ecb9f3660a1d6a9cdc4ef128debe34fa1d601bd42eec8eb64a218a06e55f14eb29ef72b682bd97c7d7e6c4
7
- data.tar.gz: c93a2ffeafe521a9eccf3e27bd6b452fd1878ad2aff2d18652f71e0597e09981e3ef8059d3f8173d94312c535d3afb986eac184929d2835c939789b8e65e6d66
6
+ metadata.gz: '0979ad9a4921e756a9e4251fe753002db11b2a3f769bb8274e45e1c44da9df64eda69d928ec72ae0666faa5c3347d779935f55134a6279b7dcd34e8f424b4e64'
7
+ data.tar.gz: 7d11f62c6ca0fee4236307a001c9038ef1e2191b72970644e90b8f6847f75f1e4b87430ded40faadddcf1bdcb6c7ec4c5d8157f9ed1265de261edf778b9fbc41
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'apiql'
7
- spec.version = '0.2.0'
7
+ spec.version = '0.2.1'
8
8
  spec.authors = ['Dmitry Silchenko']
9
9
  spec.email = ['dmitry@desofto.com']
10
10
 
@@ -42,6 +42,8 @@ const APIQL = {
42
42
  return
43
43
  }
44
44
 
45
+ if(response.status < 400) return
46
+
45
47
  if(form) {
46
48
  form.append('apiql_request', schema)
47
49
  } else {
@@ -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>\w+)(\((?<params>.*)\))?(?<rest>.*)\z/m))
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>\w+)(\((?<params>((\w+)(\s*\,\s*\w+)*))?\))?\s*\{(?<rest>.*)\z/m)
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>\w+)(\((?<params>((\w+)(\s*\,\s*\w+)*))?\))?\s*\n(?<rest>.*)\z/m)
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
- if respond_to? field
201
- public_send(field, *params)
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
- object.public_send(field, *params)
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-Z]\w*\z/)
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.0
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-13 00:00:00.000000000 Z
11
+ date: 2018-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler