Sha256: 143bbfef45841ccf64df75526fc31d4341300a7e25ff2069182abd78cc7b58b5

Contents?: true

Size: 829 Bytes

Versions: 4

Compression:

Stored size: 829 Bytes

Contents

module Trax
  module Core
    module Types
      module Behaviors
        module ArrayOfMembers
          extend ::ActiveSupport::Concern

          included do
            include ::Enumerable

            class_attribute :member_class unless self.respond_to?(:member_class) && self.member_class
          end

          def initialize(*args)
            super([args].flatten.compact)
            self.map!{ |ele| self.class.member_class.new(ele) } if self.any?
          end

          def <<(val)
            if self.class.member_class && val.class == self.class.member_class
              super(val)
            else
              super(self.class.member_class.new(val))
            end
          end

          def each(&block)
            yield __getobj__.each(&block)
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trax_core-0.0.86 lib/trax/core/types/behaviors/array_of_members.rb
trax_core-0.0.85 lib/trax/core/types/behaviors/array_of_members.rb
trax_core-0.0.84 lib/trax/core/types/behaviors/array_of_members.rb
trax_core-0.0.83 lib/trax/core/types/behaviors/array_of_members.rb