Sha256: 17cae92bcb839e09760c5dc1eb0451a2fcbddcbb42f475c48c2e8d0d58450149

Contents?: true

Size: 1.26 KB

Versions: 9

Compression:

Stored size: 1.26 KB

Contents

module Dub
  class FunctionGroup < Array
    def initialize(parent, gen = nil)
      @parent, @gen = parent, gen
    end

    def bind(generator)
      self.gen = generator.function_generator
    end

    def generator
      @gen || (@parent && @parent.function_generator)
    end

    def gen=(generator)
      @gen = generator
      @gen_members = nil
    end

    alias gen generator

    def members
      if self.generator
        if @parent.generator
          @gen_members ||= @parent.generator.members_list(self)
        else
          @gen_members ||= generator.namespace_generator.members_list(self)
        end
      else
        self
      end
    end

    def to_s
      generator.group(self)
    end

    def method_name(overloaded_index = nil)
      first.method_name(overloaded_index)
    end

    def map(&block)
      list = self.class.new(@parent, @gen)
      super(&block).each do |e|
        list << e
      end
      list
    end

    def compact
      list = self.class.new(@parent, @gen)
      super.each do |e|
        list << e
      end
      list
    end

    def overloaded_index
      nil
    end

    def <=>(other)
      name <=> other.name
    end

    private
      def method_missing(method, *args)
        first.send(method, *args)
      end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
dub-1.0.0 lib/dub/function_group.rb
dub-0.7.0 lib/dub/function_group.rb
dub-0.6.6 lib/dub/function_group.rb
dub-0.6.5 lib/dub/function_group.rb
dub-0.6.4 lib/dub/function_group.rb
dub-0.6.3 lib/dub/function_group.rb
dub-0.6.2 lib/dub/function_group.rb
dub-0.6.1 lib/dub/function_group.rb
dub-0.6.0 lib/dub/function_group.rb