Sha256: aa24a3b86fa6af59f2f6880f197ae8b2c35fe25129d3484a4aea4ca457a4f0cd

Contents?: true

Size: 930 Bytes

Versions: 28

Compression:

Stored size: 930 Bytes

Contents

module RakeFactory
  module Configurable
    def self.included(base)
      base.class_eval do
        attr_accessor(:configuration_block)
      end
    end

    def initialize(*args, &configuration_block)
      arity = self.method(:initialize).super_method.arity
      super(*args.slice(0, arity), &configuration_block)
      process_configuration_block(configuration_block)
    end

    def process_configuration_block(configuration_block)
      set_if_value_present(:configuration_block, configuration_block)
    end

    def invoke_configuration_block_on(target, args)
      if configuration_block
        params = args ? [target, args] : [target]
        configuration_block.call(
            *params.slice(0, configuration_block.arity))
      end
    end

    private

    def set_if_value_present(key, value)
      if self.respond_to?("#{key}=") && !value.nil?
        self.send("#{key}=", value)
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
rake_factory-0.30.0.pre.5 lib/rake_factory/configurable.rb
rake_factory-0.30.0.pre.4 lib/rake_factory/configurable.rb
rake_factory-0.30.0.pre.3 lib/rake_factory/configurable.rb
rake_factory-0.30.0.pre.2 lib/rake_factory/configurable.rb
rake_factory-0.30.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.29.0 lib/rake_factory/configurable.rb
rake_factory-0.28.0.pre.2 lib/rake_factory/configurable.rb
rake_factory-0.28.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.27.0 lib/rake_factory/configurable.rb
rake_factory-0.26.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.24.0.pre.2 lib/rake_factory/configurable.rb
rake_factory-0.25.0 lib/rake_factory/configurable.rb
rake_factory-0.24.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.23.0 lib/rake_factory/configurable.rb
rake_factory-0.22.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.21.0 lib/rake_factory/configurable.rb
rake_factory-0.20.0.pre.1 lib/rake_factory/configurable.rb
rake_factory-0.19.0 lib/rake_factory/configurable.rb
rake_factory-0.18.0.pre.2 lib/rake_factory/configurable.rb
rake_factory-0.18.0.pre.1 lib/rake_factory/configurable.rb