Class: Jade::Decode::Desc::Indexed
- Inherits:
-
Data
- Object
- Data
- Jade::Decode::Desc::Indexed
- Includes:
- Node
- Defined in:
- lib/jade/decode.rb
Overview
Record by position: N indices of an array into an N-argument
constructor. What the tuple decoders are built from.
Instance Attribute Summary collapse
-
#ctor ⇒ Object
readonly
Returns the value of attribute ctor.
-
#inners ⇒ Object
readonly
Returns the value of attribute inners.
Instance Method Summary collapse
Methods included from Node
Instance Attribute Details
#ctor ⇒ Object (readonly)
Returns the value of attribute ctor
222 223 224 |
# File 'lib/jade/decode.rb', line 222 def ctor @ctor end |
#inners ⇒ Object (readonly)
Returns the value of attribute inners
222 223 224 |
# File 'lib/jade/decode.rb', line 222 def inners @inners end |
Instance Method Details
#decode(value) ⇒ Object
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
# File 'lib/jade/decode.rb', line 225 def decode(value) return type_err('Array', value) unless ::Array === value size = inners.length given = value.length args = ::Array.new(size) errors = nil i = 0 while i < size if i >= given (errors ||= []) << MissingField["[#{i}]"] else decoded = inners[i].decode(value[i]) Failure === decoded ? (errors ||= []) << AtIndex[i, decoded.error] : args[i] = decoded end i += 1 end errors ? Failure.new(wrap_errors(errors)) : ctor.new(*args) end |