jmespath 1.6.1 → 1.6.2

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.
@@ -1,8 +1,8 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
4
5
  class Function < Node
5
-
6
6
  FUNCTIONS = {}
7
7
 
8
8
  def initialize(children, options = {})
@@ -38,12 +38,10 @@ module JMESPath
38
38
  private
39
39
 
40
40
  def maybe_raise(error_type, message)
41
- unless @disable_visit_errors
42
- raise error_type, message
43
- end
41
+ raise error_type, message unless @disable_visit_errors
44
42
  end
45
43
 
46
- def call(args)
44
+ def call(_args)
47
45
  nil
48
46
  end
49
47
  end
@@ -54,7 +52,7 @@ module JMESPath
54
52
  STRING_TYPE
55
53
  elsif value == true || value == false
56
54
  BOOLEAN_TYPE
57
- elsif value == nil
55
+ elsif value.nil?
58
56
  NULL_TYPE
59
57
  elsif value.is_a?(Numeric)
60
58
  NUMBER_TYPE
@@ -82,7 +80,7 @@ module JMESPath
82
80
  NULL_TYPE => 'null',
83
81
  NUMBER_TYPE => 'number',
84
82
  OBJECT_TYPE => 'object',
85
- STRING_TYPE => 'string',
83
+ STRING_TYPE => 'string'
86
84
  }.freeze
87
85
  end
88
86
 
@@ -93,12 +91,12 @@ module JMESPath
93
91
  if args.count == 1
94
92
  value = args.first
95
93
  else
96
- return maybe_raise Errors::InvalidArityError, "function abs() expects one argument"
94
+ return maybe_raise Errors::InvalidArityError, 'function abs() expects one argument'
97
95
  end
98
96
  if Numeric === value
99
97
  value.abs
100
98
  else
101
- return maybe_raise Errors::InvalidTypeError, "function abs() expects a number"
99
+ return maybe_raise Errors::InvalidTypeError, 'function abs() expects a number'
102
100
  end
103
101
  end
104
102
  end
@@ -110,20 +108,20 @@ module JMESPath
110
108
  if args.count == 1
111
109
  values = args.first
112
110
  else
113
- return maybe_raise Errors::InvalidArityError, "function avg() expects one argument"
111
+ return maybe_raise Errors::InvalidArityError, 'function avg() expects one argument'
114
112
  end
115
113
  if values.respond_to?(:to_ary)
116
114
  values = values.to_ary
117
115
  return nil if values.empty?
118
- values.inject(0) do |total,n|
116
+ values.inject(0) do |total, n|
119
117
  if Numeric === n
120
118
  total + n
121
119
  else
122
- return maybe_raise Errors::InvalidTypeError, "function avg() expects numeric values"
120
+ return maybe_raise Errors::InvalidTypeError, 'function avg() expects numeric values'
123
121
  end
124
122
  end / values.size.to_f
125
123
  else
126
- return maybe_raise Errors::InvalidTypeError, "function avg() expects a number"
124
+ return maybe_raise Errors::InvalidTypeError, 'function avg() expects a number'
127
125
  end
128
126
  end
129
127
  end
@@ -135,12 +133,12 @@ module JMESPath
135
133
  if args.count == 1
136
134
  value = args.first
137
135
  else
138
- return maybe_raise Errors::InvalidArityError, "function ceil() expects one argument"
136
+ return maybe_raise Errors::InvalidArityError, 'function ceil() expects one argument'
139
137
  end
140
138
  if Numeric === value
141
139
  value.ceil
142
140
  else
143
- return maybe_raise Errors::InvalidTypeError, "function ceil() expects a numeric value"
141
+ return maybe_raise Errors::InvalidTypeError, 'function ceil() expects a numeric value'
144
142
  end
145
143
  end
146
144
  end
@@ -157,10 +155,10 @@ module JMESPath
157
155
  elsif haystack.respond_to?(:to_ary)
158
156
  haystack.to_ary.any? { |e| Util.as_json(e) == needle }
159
157
  else
160
- return maybe_raise Errors::InvalidTypeError, "contains expects 2nd arg to be a list"
158
+ return maybe_raise Errors::InvalidTypeError, 'contains expects 2nd arg to be a list'
161
159
  end
162
160
  else
163
- return maybe_raise Errors::InvalidArityError, "function contains() expects 2 arguments"
161
+ return maybe_raise Errors::InvalidArityError, 'function contains() expects 2 arguments'
164
162
  end
165
163
  end
166
164
  end
@@ -172,12 +170,12 @@ module JMESPath
172
170
  if args.count == 1
173
171
  value = args.first
174
172
  else
175
- return maybe_raise Errors::InvalidArityError, "function floor() expects one argument"
173
+ return maybe_raise Errors::InvalidArityError, 'function floor() expects one argument'
176
174
  end
177
175
  if Numeric === value
178
176
  value.floor
179
177
  else
180
- return maybe_raise Errors::InvalidTypeError, "function floor() expects a numeric value"
178
+ return maybe_raise Errors::InvalidTypeError, 'function floor() expects a numeric value'
181
179
  end
182
180
  end
183
181
  end
@@ -189,7 +187,7 @@ module JMESPath
189
187
  if args.count == 1
190
188
  value = args.first
191
189
  else
192
- return maybe_raise Errors::InvalidArityError, "function length() expects one argument"
190
+ return maybe_raise Errors::InvalidArityError, 'function length() expects one argument'
193
191
  end
194
192
  if value.respond_to?(:to_hash)
195
193
  value.to_hash.size
@@ -198,32 +196,30 @@ module JMESPath
198
196
  elsif value.respond_to?(:to_str)
199
197
  value.to_str.size
200
198
  else
201
- return maybe_raise Errors::InvalidTypeError, "function length() expects string, array or object"
199
+ return maybe_raise Errors::InvalidTypeError, 'function length() expects string, array or object'
202
200
  end
203
201
  end
204
202
  end
205
203
 
206
204
  class Map < Function
207
-
208
205
  FUNCTIONS['map'] = self
209
206
 
210
207
  def call(args)
211
208
  if args.count != 2
212
- return maybe_raise Errors::InvalidArityError, "function map() expects two arguments"
209
+ return maybe_raise Errors::InvalidArityError, 'function map() expects two arguments'
213
210
  end
214
211
  if Nodes::Expression === args[0]
215
212
  expr = args[0]
216
213
  else
217
- return maybe_raise Errors::InvalidTypeError, "function map() expects the first argument to be an expression"
214
+ return maybe_raise Errors::InvalidTypeError, 'function map() expects the first argument to be an expression'
218
215
  end
219
216
  if args[1].respond_to?(:to_ary)
220
217
  list = args[1].to_ary
221
218
  else
222
- return maybe_raise Errors::InvalidTypeError, "function map() expects the second argument to be an list"
219
+ return maybe_raise Errors::InvalidTypeError, 'function map() expects the second argument to be an list'
223
220
  end
224
221
  list.map { |value| expr.eval(value) }
225
222
  end
226
-
227
223
  end
228
224
 
229
225
  class MaxFunction < Function
@@ -235,7 +231,7 @@ module JMESPath
235
231
  if args.count == 1
236
232
  values = args.first
237
233
  else
238
- return maybe_raise Errors::InvalidArityError, "function max() expects one argument"
234
+ return maybe_raise Errors::InvalidArityError, 'function max() expects one argument'
239
235
  end
240
236
  if values.respond_to?(:to_ary)
241
237
  values = values.to_ary
@@ -243,7 +239,7 @@ module JMESPath
243
239
  first = values.first
244
240
  first_type = get_type(first)
245
241
  unless first_type == NUMBER_TYPE || first_type == STRING_TYPE
246
- msg = "function max() expects numeric or string values"
242
+ msg = String.new('function max() expects numeric or string values')
247
243
  return maybe_raise Errors::InvalidTypeError, msg
248
244
  end
249
245
  values.inject([first, first_type]) do |(max, max_type), v|
@@ -251,13 +247,13 @@ module JMESPath
251
247
  if max_type == v_type
252
248
  v > max ? [v, v_type] : [max, max_type]
253
249
  else
254
- msg = "function max() encountered a type mismatch in sequence: "
250
+ msg = String.new('function max() encountered a type mismatch in sequence: ')
255
251
  msg << "#{max_type}, #{v_type}"
256
252
  return maybe_raise Errors::InvalidTypeError, msg
257
253
  end
258
254
  end.first
259
255
  else
260
- return maybe_raise Errors::InvalidTypeError, "function max() expects an array"
256
+ return maybe_raise Errors::InvalidTypeError, 'function max() expects an array'
261
257
  end
262
258
  end
263
259
  end
@@ -271,7 +267,7 @@ module JMESPath
271
267
  if args.count == 1
272
268
  values = args.first
273
269
  else
274
- return maybe_raise Errors::InvalidArityError, "function min() expects one argument"
270
+ return maybe_raise Errors::InvalidArityError, 'function min() expects one argument'
275
271
  end
276
272
  if values.respond_to?(:to_ary)
277
273
  values = values.to_ary
@@ -279,7 +275,7 @@ module JMESPath
279
275
  first = values.first
280
276
  first_type = get_type(first)
281
277
  unless first_type == NUMBER_TYPE || first_type == STRING_TYPE
282
- msg = "function min() expects numeric or string values"
278
+ msg = String.new('function min() expects numeric or string values')
283
279
  return maybe_raise Errors::InvalidTypeError, msg
284
280
  end
285
281
  values.inject([first, first_type]) do |(min, min_type), v|
@@ -287,13 +283,13 @@ module JMESPath
287
283
  if min_type == v_type
288
284
  v < min ? [v, v_type] : [min, min_type]
289
285
  else
290
- msg = "function min() encountered a type mismatch in sequence: "
286
+ msg = String.new('function min() encountered a type mismatch in sequence: ')
291
287
  msg << "#{min_type}, #{v_type}"
292
288
  return maybe_raise Errors::InvalidTypeError, msg
293
289
  end
294
290
  end.first
295
291
  else
296
- return maybe_raise Errors::InvalidTypeError, "function min() expects an array"
292
+ return maybe_raise Errors::InvalidTypeError, 'function min() expects an array'
297
293
  end
298
294
  end
299
295
  end
@@ -307,7 +303,7 @@ module JMESPath
307
303
  if args.count == 1
308
304
  TYPE_NAMES[get_type(args.first)]
309
305
  else
310
- return maybe_raise Errors::InvalidArityError, "function type() expects one argument"
306
+ return maybe_raise Errors::InvalidArityError, 'function type() expects one argument'
311
307
  end
312
308
  end
313
309
  end
@@ -323,10 +319,10 @@ module JMESPath
323
319
  elsif value.is_a?(Struct)
324
320
  value.members.map(&:to_s)
325
321
  else
326
- return maybe_raise Errors::InvalidTypeError, "function keys() expects a hash"
322
+ return maybe_raise Errors::InvalidTypeError, 'function keys() expects a hash'
327
323
  end
328
324
  else
329
- return maybe_raise Errors::InvalidArityError, "function keys() expects one argument"
325
+ return maybe_raise Errors::InvalidArityError, 'function keys() expects one argument'
330
326
  end
331
327
  end
332
328
  end
@@ -344,10 +340,10 @@ module JMESPath
344
340
  elsif value.respond_to?(:to_ary)
345
341
  value.to_ary
346
342
  else
347
- return maybe_raise Errors::InvalidTypeError, "function values() expects an array or a hash"
343
+ return maybe_raise Errors::InvalidTypeError, 'function values() expects an array or a hash'
348
344
  end
349
345
  else
350
- return maybe_raise Errors::InvalidArityError, "function values() expects one argument"
346
+ return maybe_raise Errors::InvalidArityError, 'function values() expects one argument'
351
347
  end
352
348
  end
353
349
  end
@@ -360,14 +356,14 @@ module JMESPath
360
356
  glue = args[0]
361
357
  values = args[1]
362
358
  if !glue.respond_to?(:to_str)
363
- return maybe_raise Errors::InvalidTypeError, "function join() expects the first argument to be a string"
359
+ return maybe_raise Errors::InvalidTypeError, 'function join() expects the first argument to be a string'
364
360
  elsif values.respond_to?(:to_ary) && values.to_ary.all? { |v| v.respond_to?(:to_str) }
365
361
  values.to_ary.join(glue)
366
362
  else
367
- return maybe_raise Errors::InvalidTypeError, "function join() expects values to be an array of strings"
363
+ return maybe_raise Errors::InvalidTypeError, 'function join() expects values to be an array of strings'
368
364
  end
369
365
  else
370
- return maybe_raise Errors::InvalidArityError, "function join() expects an array of strings"
366
+ return maybe_raise Errors::InvalidArityError, 'function join() expects an array of strings'
371
367
  end
372
368
  end
373
369
  end
@@ -380,7 +376,7 @@ module JMESPath
380
376
  value = args.first
381
377
  value.respond_to?(:to_str) ? value.to_str : value.to_json
382
378
  else
383
- return maybe_raise Errors::InvalidArityError, "function to_string() expects one argument"
379
+ return maybe_raise Errors::InvalidArityError, 'function to_string() expects one argument'
384
380
  end
385
381
  end
386
382
  end
@@ -397,7 +393,7 @@ module JMESPath
397
393
  nil
398
394
  end
399
395
  else
400
- return maybe_raise Errors::InvalidArityError, "function to_number() expects one argument"
396
+ return maybe_raise Errors::InvalidArityError, 'function to_number() expects one argument'
401
397
  end
402
398
  end
403
399
  end
@@ -407,15 +403,15 @@ module JMESPath
407
403
 
408
404
  def call(args)
409
405
  if args.count == 1 && args.first.respond_to?(:to_ary)
410
- args.first.to_ary.inject(0) do |sum,n|
406
+ args.first.to_ary.inject(0) do |sum, n|
411
407
  if Numeric === n
412
408
  sum + n
413
409
  else
414
- return maybe_raise Errors::InvalidTypeError, "function sum() expects values to be numeric"
410
+ return maybe_raise Errors::InvalidTypeError, 'function sum() expects values to be numeric'
415
411
  end
416
412
  end
417
413
  else
418
- return maybe_raise Errors::InvalidArityError, "function sum() expects one argument"
414
+ return maybe_raise Errors::InvalidArityError, 'function sum() expects one argument'
419
415
  end
420
416
  end
421
417
  end
@@ -427,7 +423,7 @@ module JMESPath
427
423
  if args.count > 0
428
424
  args.find { |value| !value.nil? }
429
425
  else
430
- return maybe_raise Errors::InvalidArityError, "function not_null() expects one or more arguments"
426
+ return maybe_raise Errors::InvalidArityError, 'function not_null() expects one or more arguments'
431
427
  end
432
428
  end
433
429
  end
@@ -444,26 +440,26 @@ module JMESPath
444
440
  value = value.to_ary
445
441
  # every element in the list must be of the same type
446
442
  array_type = get_type(value[0])
447
- if array_type == STRING_TYPE || array_type == NUMBER_TYPE || value.size == 0
443
+ if array_type == STRING_TYPE || array_type == NUMBER_TYPE || value.empty?
448
444
  # stable sort
449
445
  n = 0
450
446
  value.sort_by do |v|
451
447
  value_type = get_type(v)
452
448
  if value_type != array_type
453
- msg = "function sort() expects values to be an array of only numbers, or only integers"
449
+ msg = 'function sort() expects values to be an array of only numbers, or only integers'
454
450
  return maybe_raise Errors::InvalidTypeError, msg
455
451
  end
456
452
  n += 1
457
453
  [v, n]
458
454
  end
459
455
  else
460
- return maybe_raise Errors::InvalidTypeError, "function sort() expects values to be an array of numbers or integers"
456
+ return maybe_raise Errors::InvalidTypeError, 'function sort() expects values to be an array of numbers or integers'
461
457
  end
462
458
  else
463
- return maybe_raise Errors::InvalidTypeError, "function sort() expects values to be an array of numbers or integers"
459
+ return maybe_raise Errors::InvalidTypeError, 'function sort() expects values to be an array of numbers or integers'
464
460
  end
465
461
  else
466
- return maybe_raise Errors::InvalidArityError, "function sort() expects one argument"
462
+ return maybe_raise Errors::InvalidArityError, 'function sort() expects one argument'
467
463
  end
468
464
  end
469
465
  end
@@ -479,27 +475,27 @@ module JMESPath
479
475
  values = args[0].to_ary
480
476
  expression = args[1]
481
477
  array_type = get_type(expression.eval(values[0]))
482
- if array_type == STRING_TYPE || array_type == NUMBER_TYPE || values.size == 0
478
+ if array_type == STRING_TYPE || array_type == NUMBER_TYPE || values.empty?
483
479
  # stable sort the list
484
480
  n = 0
485
481
  values.sort_by do |value|
486
482
  value = expression.eval(value)
487
483
  value_type = get_type(value)
488
484
  if value_type != array_type
489
- msg = "function sort() expects values to be an array of only numbers, or only integers"
485
+ msg = 'function sort() expects values to be an array of only numbers, or only integers'
490
486
  return maybe_raise Errors::InvalidTypeError, msg
491
487
  end
492
488
  n += 1
493
489
  [value, n]
494
490
  end
495
491
  else
496
- return maybe_raise Errors::InvalidTypeError, "function sort() expects values to be an array of numbers or integers"
492
+ return maybe_raise Errors::InvalidTypeError, 'function sort() expects values to be an array of numbers or integers'
497
493
  end
498
494
  else
499
- return maybe_raise Errors::InvalidTypeError, "function sort_by() expects an array and an expression"
495
+ return maybe_raise Errors::InvalidTypeError, 'function sort_by() expects an array and an expression'
500
496
  end
501
497
  else
502
- return maybe_raise Errors::InvalidArityError, "function sort_by() expects two arguments"
498
+ return maybe_raise Errors::InvalidArityError, 'function sort_by() expects two arguments'
503
499
  end
504
500
  end
505
501
  end
@@ -522,7 +518,7 @@ module JMESPath
522
518
  value = expression.eval(entry)
523
519
  value_type = get_type(value)
524
520
  if value_type != type
525
- msg = "function #{mode}() encountered a type mismatch in "
521
+ msg = String.new("function #{mode}() encountered a type mismatch in ")
526
522
  msg << "sequence: #{type}, #{value_type}"
527
523
  return maybe_raise Errors::InvalidTypeError, msg
528
524
  end
@@ -570,16 +566,16 @@ module JMESPath
570
566
  search_type = get_type(search)
571
567
  suffix_type = get_type(suffix)
572
568
  if search_type != STRING_TYPE
573
- msg = "function ends_with() expects first argument to be a string"
569
+ msg = 'function ends_with() expects first argument to be a string'
574
570
  return maybe_raise Errors::InvalidTypeError, msg
575
571
  end
576
572
  if suffix_type != STRING_TYPE
577
- msg = "function ends_with() expects second argument to be a string"
573
+ msg = 'function ends_with() expects second argument to be a string'
578
574
  return maybe_raise Errors::InvalidTypeError, msg
579
575
  end
580
576
  search.end_with?(suffix)
581
577
  else
582
- msg = "function ends_with() expects two arguments"
578
+ msg = 'function ends_with() expects two arguments'
583
579
  return maybe_raise Errors::InvalidArityError, msg
584
580
  end
585
581
  end
@@ -596,16 +592,16 @@ module JMESPath
596
592
  search_type = get_type(search)
597
593
  prefix_type = get_type(prefix)
598
594
  if search_type != STRING_TYPE
599
- msg = "function starts_with() expects first argument to be a string"
595
+ msg = 'function starts_with() expects first argument to be a string'
600
596
  return maybe_raise Errors::InvalidTypeError, msg
601
597
  end
602
598
  if prefix_type != STRING_TYPE
603
- msg = "function starts_with() expects second argument to be a string"
599
+ msg = 'function starts_with() expects second argument to be a string'
604
600
  return maybe_raise Errors::InvalidTypeError, msg
605
601
  end
606
602
  search.start_with?(prefix)
607
603
  else
608
- msg = "function starts_with() expects two arguments"
604
+ msg = 'function starts_with() expects two arguments'
609
605
  return maybe_raise Errors::InvalidArityError, msg
610
606
  end
611
607
  end
@@ -616,7 +612,7 @@ module JMESPath
616
612
 
617
613
  def call(args)
618
614
  if args.count == 0
619
- msg = "function merge() expects 1 or more arguments"
615
+ msg = 'function merge() expects 1 or more arguments'
620
616
  return maybe_raise Errors::InvalidArityError, msg
621
617
  end
622
618
  args.inject({}) do |h, v|
@@ -630,7 +626,7 @@ module JMESPath
630
626
 
631
627
  def call(args)
632
628
  if args.count == 0
633
- msg = "function reverse() expects 1 or more arguments"
629
+ msg = 'function reverse() expects 1 or more arguments'
634
630
  return maybe_raise Errors::InvalidArityError, msg
635
631
  end
636
632
  value = args.first
@@ -639,7 +635,7 @@ module JMESPath
639
635
  elsif value.respond_to?(:to_str)
640
636
  value.to_str.reverse
641
637
  else
642
- msg = "function reverse() expects an array or string"
638
+ msg = 'function reverse() expects an array or string'
643
639
  return maybe_raise Errors::InvalidTypeError, msg
644
640
  end
645
641
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -8,7 +9,7 @@ module JMESPath
8
9
  @value = value
9
10
  end
10
11
 
11
- def visit(value)
12
+ def visit(_value)
12
13
  @value
13
14
  end
14
15
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,7 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  module Nodes
3
4
  class Not < Node
4
-
5
5
  def initialize(expression)
6
6
  @expression = expression
7
7
  end
@@ -13,7 +13,6 @@ module JMESPath
13
13
  def optimize
14
14
  self.class.new(@expression.optimize)
15
15
  end
16
-
17
16
  end
18
17
  end
19
18
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -12,9 +13,7 @@ module JMESPath
12
13
  list = []
13
14
  targets.each do |v|
14
15
  vv = @projection.visit(v)
15
- unless vv.nil?
16
- list << vv
17
- end
16
+ list << vv unless vv.nil?
18
17
  end
19
18
  list
20
19
  end
@@ -30,7 +29,7 @@ module JMESPath
30
29
 
31
30
  private
32
31
 
33
- def extract_targets(left_value)
32
+ def extract_targets(_left_value)
34
33
  nil
35
34
  end
36
35
  end
@@ -45,11 +44,7 @@ module JMESPath
45
44
 
46
45
  class ArrayProjection < Projection
47
46
  def extract_targets(target)
48
- if target.respond_to?(:to_ary)
49
- target.to_ary
50
- else
51
- nil
52
- end
47
+ target.to_ary if target.respond_to?(:to_ary)
53
48
  end
54
49
 
55
50
  def fast_instance
@@ -67,8 +62,6 @@ module JMESPath
67
62
  target.to_hash.values
68
63
  elsif target.is_a?(Struct)
69
64
  target.values
70
- else
71
- nil
72
65
  end
73
66
  end
74
67
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -6,7 +7,7 @@ module JMESPath
6
7
  @start = start
7
8
  @stop = stop
8
9
  @step = step
9
- raise Errors::InvalidValueError.new('slice step cannot be 0') if @step == 0
10
+ raise Errors::InvalidValueError, 'slice step cannot be 0' if @step == 0
10
11
  end
11
12
 
12
13
  def visit(value)
@@ -27,8 +28,6 @@ module JMESPath
27
28
  end
28
29
  end
29
30
  value.respond_to?(:to_str) ? result.join : result
30
- else
31
- nil
32
31
  end
33
32
  end
34
33
 
@@ -43,21 +42,19 @@ module JMESPath
43
42
  private
44
43
 
45
44
  def adjust_slice(length, start, stop, step)
46
- if step.nil?
47
- step = 1
48
- end
45
+ step = 1 if step.nil?
49
46
 
50
- if start.nil?
51
- start = step < 0 ? length - 1 : 0
52
- else
53
- start = adjust_endpoint(length, start, step)
54
- end
47
+ start = if start.nil?
48
+ step < 0 ? length - 1 : 0
49
+ else
50
+ adjust_endpoint(length, start, step)
51
+ end
55
52
 
56
- if stop.nil?
57
- stop = step < 0 ? -1 : length
58
- else
59
- stop = adjust_endpoint(length, stop, step)
60
- end
53
+ stop = if stop.nil?
54
+ step < 0 ? -1 : length
55
+ else
56
+ adjust_endpoint(length, stop, step)
57
+ end
61
58
  [start, stop, step]
62
59
  end
63
60
 
@@ -82,8 +79,6 @@ module JMESPath
82
79
  def visit(value)
83
80
  if (value = value.respond_to?(:to_str) ? value.to_str : value.respond_to?(:to_ary) ? value.to_ary : nil)
84
81
  value[@start, @stop - @start]
85
- else
86
- nil
87
82
  end
88
83
  end
89
84
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module JMESPath
2
3
  # @api private
3
4
  module Nodes
@@ -9,11 +10,11 @@ module JMESPath
9
10
  self
10
11
  end
11
12
 
12
- def chains_with?(other)
13
+ def chains_with?(_other)
13
14
  false
14
15
  end
15
16
  end
16
-
17
+
17
18
  require 'jmespath/nodes/subexpression'
18
19
  require 'jmespath/nodes/and'
19
20
  require 'jmespath/nodes/comparator'
@@ -35,7 +36,5 @@ module JMESPath
35
36
  require 'jmespath/nodes/projection'
36
37
  require 'jmespath/nodes/projection'
37
38
  require 'jmespath/nodes/slice'
38
-
39
-
40
39
  end
41
40
  end