Sha256: 999d5c6ac275008a21fd0ecf2df844b761e12ccaedeb6cfba4c0fe8aa768090f

Contents?: true

Size: 856 Bytes

Versions: 1

Compression:

Stored size: 856 Bytes

Contents

module Typekit
  module Collection
    class Base
      extend Forwardable
      include Enumerable

      include Client::Proxy

      include Serialization

      def_delegators :elements, :to_ary, :to_a, :to_json,
        :[], :each, :size, :length, :empty?, :delete
      def_delegator :klass, :feature?

      def initialize(name, *arguments)
        objects = Helper.extract_array!(arguments)

        @elements = []
        @klass = Element.classify(name)
        connect(arguments.first, name)

        objects.each { |object| push(object) }
      end

      def push(object)
        if object.is_a?(klass)
          object.connect(self)
          elements << object
        else
          elements << klass.new(self, object)
        end
      end
      alias_method :<<, :push

      private

      attr_reader :elements, :klass
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
typekit-client-0.0.6 lib/typekit/collection/base.rb