Class: CarryOut::Unit
- Inherits:
-
Object
- Object
- CarryOut::Unit
- Defined in:
- lib/carry_out/unit.rb
Class Method Summary collapse
- .appending_parameter(method_name, var) ⇒ Object
- .call {|unit| ... } ⇒ Object
- .has_parameter?(method) ⇒ Boolean
- .parameter(method_name, var = nil, options = {}) ⇒ Object
- .parameter_defaults ⇒ Object
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize ⇒ Unit
constructor
A new instance of Unit.
Constructor Details
#initialize ⇒ Unit
Returns a new instance of Unit.
8 9 10 11 12 |
# File 'lib/carry_out/unit.rb', line 8 def initialize self.class.parameter_defaults.each do |p, d| instance_variable_set("@#{p}", d) end end |
Class Method Details
.appending_parameter(method_name, var) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/carry_out/unit.rb', line 24 def self.appending_parameter(method_name, var) instance_var = "@#{var}" define_method(method_name.to_sym) do |value| existing = if instance_variable_defined?(instance_var) [ instance_variable_get("@#{var}") ].flatten(1) else [] end instance_variable_set(instance_var, (existing || []) << value) self end end |
.call {|unit| ... } ⇒ Object
14 15 16 17 18 |
# File 'lib/carry_out/unit.rb', line 14 def self.call(&block) unit = self.new yield unit if block unit.call end |
.has_parameter?(method) ⇒ Boolean
20 21 22 |
# File 'lib/carry_out/unit.rb', line 20 def self.has_parameter?(method) self.instance_methods.include?(method) end |
.parameter(method_name, var = nil, options = {}) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/carry_out/unit.rb', line 40 def self.parameter(method_name, var = nil, = {}) if var.kind_of?(Hash) = var var = nil end var ||= method_name define_method(method_name.to_sym) do |*args| instance_variable_set("@#{var}", args.length == 0 ? true : args.first) self end parameter_defaults[var] = [:default] unless [:default].nil? end |
.parameter_defaults ⇒ Object
56 57 58 |
# File 'lib/carry_out/unit.rb', line 56 def self.parameter_defaults @parameter_defaults ||= {} end |
Instance Method Details
#call ⇒ Object
4 5 6 |
# File 'lib/carry_out/unit.rb', line 4 def call raise "Expected #{self.class} to define #{self.class}#call" unless self.class == Unit end |