Class: Jade::Decode::Desc::Variant

Inherits:
Data
  • Object
show all
Includes:
Node
Defined in:
lib/jade/decode.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Node

#decoded?

Instance Attribute Details

#casesObject (readonly)

Returns the value of attribute cases

Returns:

  • (Object)

    the current value of cases



381
382
383
# File 'lib/jade/decode.rb', line 381

def cases
  @cases
end

Instance Method Details

#decode(value) ⇒ Object



384
385
386
387
388
389
390
391
392
393
394
395
# File 'lib/jade/decode.rb', line 384

def decode(value)
  return type_err('Array', value) unless ::Array === value
  return Failure.new(Custom['empty variant array']) if value.empty?

  tag = value.first
  return type_err('String tag at index 0', tag) unless ::String === tag

  inner = cases[tag]
  return Failure.new(Custom["unknown variant: #{tag.inspect}"]) unless inner

  inner.decode(value)
end