stduritemplate 0.0.46 → 0.0.47
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/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
|