Class: Finitio::SeqType
- Includes:
- CollectionType
- Defined in:
- lib/finitio/type/seq_type.rb
Overview
The Seq type generator allows capturing sequences of values. For example, a (implicitely temporal) series of temperature measures could be written as:
Measures = [Temperature]
This class allows capturing those sequence types, e.g.:
Temperature = BuiltinType.new(Float)
Measures = SeqType.new(Temperature)
An array of values is used as concrete representation for such sequences:
R(Measures) = Array[R(Temperature)] = Array[Float]
Accordingly, the dress transformation function has the signature below. It expects it’s Alpha/Object argument to be a object responding to each (with the ruby idiomatic semantics that such a each returns an Enumerator when invoked without block).
dress :: Alpha -> Measures throws TypeError
dress :: Object -> Array[Float] throws TypeError
Instance Attribute Summary
Attributes included from CollectionType
Instance Method Summary collapse
- #default_name ⇒ Object
-
#dress(value, handler = DressHelper.new) ⇒ Object
Apply the element type’s
dresstransformation to each element ofvalue(expected to respond toeach). - #include?(value) ⇒ Boolean
Methods included from CollectionType
Methods inherited from Type
#initialize, #name, #name=, #to_s
Instance Method Details
#default_name ⇒ Object
46 47 48 |
# File 'lib/finitio/type/seq_type.rb', line 46 def default_name "[#{elm_type.name}]" end |
#dress(value, handler = DressHelper.new) ⇒ Object
Apply the element type’s dress transformation to each element of value (expected to respond to each). Return converted values in a ruby Array.
36 37 38 39 40 41 42 43 44 |
# File 'lib/finitio/type/seq_type.rb', line 36 def dress(value, handler = DressHelper.new) handler.failed!(self, value) unless value.respond_to?(:each) array = [] handler.iterate(value) do |elm, index| array << elm_type.dress(elm, handler) end array end |
#include?(value) ⇒ Boolean
29 30 31 |
# File 'lib/finitio/type/seq_type.rb', line 29 def include?(value) value.is_a?(::Array) and value.all?{|v| elm_type.include?(v) } end |