Sha256: 4e534d29c4b16814b32744d71b4ed69e7c3f6ddb6fcf2b7647ad03ebda7235da
Contents?: true
Size: 1.28 KB
Versions: 3
Compression:
Stored size: 1.28 KB
Contents
module RakeFactory class Parameter attr_reader( :name, :default, :required, :configurable, :transform) attr_writer(:default) def initialize(name, options) @name = name @default = options[:default] || nil @required = options[:required] || false @configurable = options[:configurable].nil? ? true : !!options[:configurable] @transform = options[:transform] || lambda { |x| x } end def writer_method "#{name}=" end def reader_method name end def instance_variable "@#{name}" end def define_on(klass) parameter = self klass.class_eval do attr_reader parameter.reader_method define_method parameter.writer_method do |value| instance_variable_set( parameter.instance_variable, parameter.transform.call(value)) end end end def apply_default_to(instance) instance.send(writer_method, @default) unless @default.nil? end def configurable? @configurable end def dissatisfied_by?(instance) value = instance.send(reader_method) @required && value.nil? end def satisfied_by?(instance) !dissatisfied_by?(instance) end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
rake_factory-0.1.0 | lib/rake_factory/parameter.rb |
rake_factory-0.0.1 | lib/rake_factory/parameter.rb |
rake_tasklib-0.0.1 | lib/rake_factory/parameter.rb |