Sha256: 909c4c35d3651b1e70d98f3ceb313519cde04eb45c8e7b7718a0015731420d1e

Contents?: true

Size: 914 Bytes

Versions: 9

Compression:

Stored size: 914 Bytes

Contents

# frozen_string_literal: true

require_relative 'parameter_set'

module RakeFactory
  module Parameters
    def self.included(base)
      base.extend(ClassMethods)
    end

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

    def parameter_values
      self.class.parameter_set.read_from(self)
    end

    def setup_parameter_defaults
      self.class.parameter_set.apply_defaults_to(self)
    end

    def check_parameter_requirements
      self.class.parameter_set.enforce_requirements_on(self)
    end

    module ClassMethods
      def parameter_set
        @parameter_set ||= ParameterSet.new
      end

      def parameter(name, options = {})
        parameter = parameter_set.add(name, options)
        parameter.define_on(self)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rake_factory-0.32.0.pre.5 lib/rake_factory/parameters.rb
rake_factory-0.32.0.pre.4 lib/rake_factory/parameters.rb
rake_factory-0.32.0.pre.3 lib/rake_factory/parameters.rb
rake_factory-0.32.0.pre.2 lib/rake_factory/parameters.rb
rake_factory-0.32.0.pre.1 lib/rake_factory/parameters.rb
rake_factory-0.31.0 lib/rake_factory/parameters.rb
rake_factory-0.30.0.pre.8 lib/rake_factory/parameters.rb
rake_factory-0.30.0.pre.7 lib/rake_factory/parameters.rb
rake_factory-0.30.0.pre.6 lib/rake_factory/parameters.rb