Sha256: 16c221aef6d031d42288d325e2ec01fe636ff3e4790ff99c35f5b60330f0b960
Contents?: true
Size: 950 Bytes
Versions: 1
Compression:
Stored size: 950 Bytes
Contents
# typed: strict module Repeatable module Expression class Set < Base abstract! sig { returns(T::Array[Expression::Base]) } attr_reader :elements sig { params(elements: T.any(Expression::Base, T::Array[Expression::Base])).void } def initialize(*elements) @elements = T.let(elements.flatten.uniq, T::Array[Expression::Base]) end sig { params(element: T.untyped).returns(Repeatable::Expression::Set) } def <<(element) elements << element unless elements.include?(element) self end sig { params(other: Object).returns(T::Boolean) } def ==(other) other.is_a?(self.class) && elements.size == other.elements.size && other.elements.all? { |e| elements.include?(e) } end private sig { override.returns(T::Array[Types::SymbolHash]) } def hash_value elements.map(&:to_h) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
repeatable-1.1.0 | lib/repeatable/expression/set.rb |