module Yoda module Model module Types class SequenceType < Base attr_reader :base_type, :types # @param base_type [Base] # @param types [Array] def initialize(base_type, types) @base_type = base_type @types = types end def name base_type.name end # @param another [Object] def eql?(another) another.is_a?(SequenceType) && base_type == another.base_type && types == another.types end def hash [self.class.name, base_type, types].hash end # @param paths [Array] # @return [self] def change_root(paths) self.class.new(base_type.change_root(paths), types.map { |type| type.change_root(paths) }) end # @param registry [Registry] # @return [Array] def resolve(registry) base_type.resolve(registry) end # @return [String] def to_s "#{base_type}(#{types.map(&:to_s).join(', ')})" end # @return [self] def map(&block) self.class.new(base_type.map(&block), types.map(&block)) end end end end end