Class: RBI::Type::All
Overview
A type that is intersection of multiple types like T.all(String, Integer).
Instance Attribute Summary
Attributes inherited from Composite
Instance Method Summary collapse
-
#normalize ⇒ Object
: -> Type.
-
#simplify ⇒ Object
: -> Type.
-
#to_rbi ⇒ Object
: -> String.
Methods inherited from Composite
Constructor Details
This class inherits a constructor from RBI::Type::Composite
Instance Method Details
#normalize ⇒ Object
: -> Type
429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 |
# File 'lib/rbi/type.rb', line 429 def normalize flattened = @types.flat_map do |type| type = type.normalize case type when All type.types.map(&:normalize) else type end end.uniq if flattened.size == 1 return flattened.first #: as !nil end All.new(flattened) end |
#simplify ⇒ Object
: -> Type
449 450 451 452 453 454 455 456 457 458 |
# File 'lib/rbi/type.rb', line 449 def simplify type = normalize case type when All All.new(type.types.map(&:simplify)) else type.simplify end end |
#to_rbi ⇒ Object
: -> String
423 424 425 |
# File 'lib/rbi/type.rb', line 423 def to_rbi "::T.all(#{@types.map(&:to_rbi).join(", ")})" end |