stduritemplate 0.0.45 → 0.0.47
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stduritemplate.rb +46 -20
- 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: 46e0541ea158bf0c98ef31cbbd123cd8959f68280744dff77be1608595cece76
|
4
|
+
data.tar.gz: 66adec2a3f6937e38ed279d02d94bcff1843708b81241a6088e6924ad56836da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 593e6ed370954a3129559dbda02605ce3b3ee94a74f5b05dfb5a7db2ccb278457902c2b713066b188cb62f9293e5c5799d6af1d8a848bd2224d3190ab4f706b4
|
7
|
+
data.tar.gz: 7ae3267717100fd9548ff0ecf7390cfeeecdd7c1ae51deeb104d12db6f503ed35be2a1e4f71fec66bdd4548a9f609499b044614772336bdd405c931964cf53af
|
data/lib/stduritemplate.rb
CHANGED
@@ -167,34 +167,38 @@ module StdUriTemplate
|
|
167
167
|
def self.add_value(op, token, value, result, max_char)
|
168
168
|
case op
|
169
169
|
when Operator::PLUS, Operator::HASH
|
170
|
-
add_expanded_value(value, result, max_char, false)
|
170
|
+
add_expanded_value(nil, value, result, max_char, false)
|
171
171
|
when Operator::QUESTION_MARK, Operator::AMP
|
172
172
|
result << token + '='
|
173
|
-
add_expanded_value(value, result, max_char, true)
|
173
|
+
add_expanded_value(nil, value, result, max_char, true)
|
174
174
|
when Operator::SEMICOLON
|
175
175
|
result << token
|
176
|
-
|
177
|
-
add_expanded_value(value, result, max_char, true)
|
176
|
+
add_expanded_value('=', value, result, max_char, true)
|
178
177
|
when Operator::DOT, Operator::SLASH, Operator::NO_OP
|
179
|
-
add_expanded_value(value, result, max_char, true)
|
178
|
+
add_expanded_value(nil, value, result, max_char, true)
|
180
179
|
end
|
181
180
|
end
|
182
181
|
|
183
182
|
def self.add_value_element(op, token, value, result, max_char)
|
184
183
|
case op
|
185
184
|
when Operator::PLUS, Operator::HASH
|
186
|
-
add_expanded_value(value, result, max_char, false)
|
185
|
+
add_expanded_value(nil, value, result, max_char, false)
|
187
186
|
when Operator::QUESTION_MARK, Operator::AMP, Operator::SEMICOLON, Operator::DOT, Operator::SLASH, Operator::NO_OP
|
188
|
-
add_expanded_value(value, result, max_char, true)
|
187
|
+
add_expanded_value(nil, value, result, max_char, true)
|
189
188
|
end
|
190
189
|
end
|
191
190
|
|
192
|
-
def self.add_expanded_value(value, result, max_char, replace_reserved)
|
193
|
-
|
191
|
+
def self.add_expanded_value(prefix, value, result, max_char, replace_reserved)
|
192
|
+
string_value = convert_native_types(value)
|
193
|
+
max = (max_char != -1) ? [max_char, string_value.length].min : string_value.length
|
194
194
|
reserved_buffer = nil
|
195
195
|
|
196
|
+
if (max > 0 && !prefix.nil?)
|
197
|
+
result << prefix
|
198
|
+
end
|
199
|
+
|
196
200
|
max.times do |i|
|
197
|
-
character =
|
201
|
+
character = string_value[i]
|
198
202
|
|
199
203
|
if character == '%' && !replace_reserved
|
200
204
|
reserved_buffer = ''
|
@@ -254,13 +258,16 @@ module StdUriTemplate
|
|
254
258
|
end
|
255
259
|
|
256
260
|
module SubstitutionType
|
261
|
+
EMPTY = :empty
|
257
262
|
STRING = :string
|
258
263
|
LIST = :list
|
259
264
|
MAP = :map
|
260
265
|
end
|
261
266
|
|
262
267
|
def self.get_substitution_type(value, col)
|
263
|
-
if
|
268
|
+
if value.nil?
|
269
|
+
SubstitutionType::EMPTY
|
270
|
+
elsif is_native_type(value)
|
264
271
|
SubstitutionType::STRING
|
265
272
|
elsif map?(value)
|
266
273
|
SubstitutionType::MAP
|
@@ -284,15 +291,34 @@ module StdUriTemplate
|
|
284
291
|
end
|
285
292
|
end
|
286
293
|
|
294
|
+
def self.is_native_type(value)
|
295
|
+
if (
|
296
|
+
([Integer, Float, String].any? { |type| value.is_a?(type) }) || ([true, false].include? value) ||
|
297
|
+
([DateTime].any? { |type| value.is_a?(type) }))
|
298
|
+
true
|
299
|
+
else
|
300
|
+
false
|
301
|
+
end
|
302
|
+
end
|
303
|
+
|
304
|
+
def self.convert_native_types(value)
|
305
|
+
if ([Integer, Float, String].any? { |type| value.is_a?(type) }) || ([true, false].include? value)
|
306
|
+
value.to_s
|
307
|
+
elsif ([DateTime].any? { |type| value.is_a?(type) })
|
308
|
+
value.strftime("%Y-%m-%dT%H:%M:%SZ")
|
309
|
+
else
|
310
|
+
raise ArgumentError, "Illegal class passed as substitution, found #{value.class}"
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
287
314
|
def self.expand_token(operator, token, composite, max_char, first_token, substitutions, result, col)
|
288
315
|
raise ArgumentError, "Found an empty token at col:#{col}" if token.empty?
|
289
316
|
|
290
317
|
value = substitutions[token]
|
291
|
-
value = value.to_s if ([Integer, Float].any? { |type| value.is_a?(type) }) || ([true, false].include? value)
|
292
|
-
value = value.strftime("%Y-%m-%dT%H:%M:%SZ") if ([DateTime].any? { |type| value.is_a?(type) })
|
293
|
-
|
294
318
|
subst_type = get_substitution_type(value, col)
|
295
|
-
|
319
|
+
if (subst_type == SubstitutionType::EMPTY || empty?(subst_type, value))
|
320
|
+
return false
|
321
|
+
end
|
296
322
|
|
297
323
|
if first_token
|
298
324
|
add_prefix(operator, result)
|
@@ -302,7 +328,7 @@ module StdUriTemplate
|
|
302
328
|
|
303
329
|
case subst_type
|
304
330
|
when SubstitutionType::STRING
|
305
|
-
add_string_value(operator, token, value
|
331
|
+
add_string_value(operator, token, value, result, max_char)
|
306
332
|
when SubstitutionType::LIST
|
307
333
|
add_list_value(operator, token, value, result, max_char, composite)
|
308
334
|
when SubstitutionType::MAP
|
@@ -320,15 +346,15 @@ module StdUriTemplate
|
|
320
346
|
first = true
|
321
347
|
value.each do |v|
|
322
348
|
if first
|
323
|
-
add_value(operator, token, v
|
349
|
+
add_value(operator, token, v, result, max_char)
|
324
350
|
first = false
|
325
351
|
else
|
326
352
|
if composite
|
327
353
|
add_separator(operator, result)
|
328
|
-
add_value(operator, token, v
|
354
|
+
add_value(operator, token, v, result, max_char)
|
329
355
|
else
|
330
356
|
result << ','
|
331
|
-
add_value_element(operator, token, v
|
357
|
+
add_value_element(operator, token, v, result, max_char)
|
332
358
|
end
|
333
359
|
end
|
334
360
|
end
|
@@ -353,7 +379,7 @@ module StdUriTemplate
|
|
353
379
|
end
|
354
380
|
result << ','
|
355
381
|
end
|
356
|
-
add_value_element(operator, token, val
|
382
|
+
add_value_element(operator, token, val, result, max_char)
|
357
383
|
first = false
|
358
384
|
end
|
359
385
|
!first
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stduritemplate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.47
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrea Peruffo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: std-uritemplate implementation for Ruby
|
14
14
|
email: andrea.peruffo1982@gmail.com
|