Class: Qrb::SeqType
- Includes:
- CollectionType
- Defined in:
- lib/qrb/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 ‘dress` transformation to each element of `value` (expected to respond to `each`).
- #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/qrb/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/qrb/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/qrb/type/seq_type.rb', line 29 def include?(value) value.is_a?(::Array) and value.all?{|v| elm_type.include?(v) } end |