Class: Etna::Cwl::TypedDSLLoader
Overview
Prepares a unique set of structured nominal types for an inner loading of types
Constant Summary collapse
- REGEX =
/^([^\[?]+)(\[\])?(\?)?$/
- OUTER_TYPE_LOADER =
TypedDSLLoader.new( UnionLoader.new( RecordType::RecordTypeLoader.new, ArrayType::InnerLoader.new, EnumType::InnerLoader.new, EnumLoader::PRIMITIVE_TYPE, EnumLoader::NOMINAL_TYPE, ) )
- WITH_UNIONS_TYPE_LOADER =
TypedDSLLoader.new( UnionLoader.new( OUTER_TYPE_LOADER, ArrayLoader.new(OUTER_TYPE_LOADER), ) )
Instance Method Summary collapse
-
#initialize(inner) ⇒ TypedDSLLoader
constructor
A new instance of TypedDSLLoader.
- #load(val) ⇒ Object
- #resolve(val) ⇒ Object
Methods inherited from Loader
#as_array, #as_mapped_array, #map, #optional, #or
Constructor Details
#initialize(inner) ⇒ TypedDSLLoader
Returns a new instance of TypedDSLLoader.
437 438 439 |
# File 'lib/etna/cwl.rb', line 437 def initialize(inner) @inner = inner end |
Instance Method Details
#load(val) ⇒ Object
461 462 463 464 465 466 467 468 469 470 471 |
# File 'lib/etna/cwl.rb', line 461 def load(val) if val.is_a?(Array) @inner.load(val.map do |item| item.is_a?(String) ? resolve(item) : item end) elsif val.is_a?(String) @inner.load(resolve(val)) else @inner.load(val) end end |
#resolve(val) ⇒ Object
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 |
# File 'lib/etna/cwl.rb', line 443 def resolve(val) m = REGEX.match(val) unless m.nil? type = m[1] unless m[2].nil? type = {'type' => 'array', 'items' => type} end unless m[3].nil? type = ["null", type] end return type end val end |