Sha256: 8ae4aa8225e0cc6c141fe8b4b7d56c253cdd707c2708954c4ce2d6d2f886cc66

Contents?: true

Size: 1.1 KB

Versions: 13

Compression:

Stored size: 1.1 KB

Contents

module RakeFactory
  class ParameterView
    attr_reader(:task)

    def initialize(target, reader_class, writer_class, args)
      self.instance_eval do
        reader_class.parameter_set.each do |parameter|
          define_singleton_method parameter.reader_method do
            target.send(parameter.reader_method)
          end
        end
        writer_class.parameter_set.each do |parameter|
          if parameter.configurable?
            define_singleton_method parameter.writer_method do |value|
              if target.respond_to?(parameter.writer_method)
                resolved_value = lambda do |t|
                  params = args ? [t, args] : [t]
                  value.respond_to?(:call) ?
                      value.call(*params.slice(0, value.arity)) :
                      value
                end
                target.send(parameter.writer_method, resolved_value)
              end
            end
          end
        end
      end
      self.class.instance_eval do
        define_singleton_method :parameter_set do
          reader_class.parameter_set
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rake_factory-0.21.0 lib/rake_factory/parameter_view.rb
rake_factory-0.20.0.pre.1 lib/rake_factory/parameter_view.rb
rake_factory-0.19.0 lib/rake_factory/parameter_view.rb
rake_factory-0.18.0.pre.2 lib/rake_factory/parameter_view.rb
rake_factory-0.18.0.pre.1 lib/rake_factory/parameter_view.rb
rake_factory-0.17.0 lib/rake_factory/parameter_view.rb
rake_factory-0.16.0.pre.1 lib/rake_factory/parameter_view.rb
rake_factory-0.15.0 lib/rake_factory/parameter_view.rb
rake_factory-0.14.0.pre.1 lib/rake_factory/parameter_view.rb
rake_factory-0.13.0 lib/rake_factory/parameter_view.rb
rake_factory-0.12.0.pre.1 lib/rake_factory/parameter_view.rb
rake_factory-0.11.0 lib/rake_factory/parameter_view.rb
rake_factory-0.10.0.pre.1 lib/rake_factory/parameter_view.rb