Class: StrongJSON::Type::ErrorPath

Inherits:
Object
  • Object
show all
Defined in:
lib/strong_json/type.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type:, parent:) ⇒ ErrorPath

Returns a new instance of ErrorPath.



375
376
377
378
# File 'lib/strong_json/type.rb', line 375

def initialize(type:, parent:)
  @type = type
  @parent = parent
end

Instance Attribute Details

#parentObject (readonly)

Returns the value of attribute parent.



373
374
375
# File 'lib/strong_json/type.rb', line 373

def parent
  @parent
end

#typeObject (readonly)

Returns the value of attribute type.



373
374
375
# File 'lib/strong_json/type.rb', line 373

def type
  @type
end

Class Method Details

.root(type) ⇒ Object



392
393
394
# File 'lib/strong_json/type.rb', line 392

def self.root(type)
  self.new(type: type, parent: nil)
end

Instance Method Details

#dig(key:, type:) ⇒ Object



380
381
382
383
384
# File 'lib/strong_json/type.rb', line 380

def dig(key:, type:)
  # @type var parent: [Integer | Symbol | nil, ErrorPath]
  parent = [key, self]
  self.class.new(type: type, parent: parent)
end

#expand(type:) ⇒ Object



386
387
388
389
390
# File 'lib/strong_json/type.rb', line 386

def expand(type:)
  # @type var parent: [Integer | Symbol | nil, ErrorPath]
  parent = [nil, self]
  self.class.new(type: type, parent: parent)
end

#root?Boolean

Returns:

  • (Boolean)


396
397
398
# File 'lib/strong_json/type.rb', line 396

def root?
  !parent
end

#to_sObject



400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
# File 'lib/strong_json/type.rb', line 400

def to_s
  if pa = parent
    if key = pa[0]
      pa[1].to_s + case key
                   when Integer
                     "[#{key}]"
                   when Symbol
                     ".#{key}"
                   end
    else
      pa[1].to_s
    end
  else
    "$"
  end
end