Class: Jade::Decode::Desc::Variant
- Inherits:
-
Data
- Object
- Data
- Jade::Decode::Desc::Variant
- Includes:
- Node
- Defined in:
- lib/jade/decode.rb
Instance Attribute Summary collapse
-
#cases ⇒ Object
readonly
Returns the value of attribute cases.
Instance Method Summary collapse
Methods included from Node
Instance Attribute Details
#cases ⇒ Object (readonly)
Returns the value of attribute 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 |