class Medicine::Dependency
Attributes
name[R]
Public Class Methods
new(name, options = {})
click to toggle source
# File lib/medicine/dependency.rb, line 8 def initialize(name, options = {}) @name = name @default = options.fetch(:default, NoDefault) end
Public Instance Methods
default() { || ... }
click to toggle source
returns the default, yields block or raises an error
FIXME: move block yielding to default_or method.
# File lib/medicine/dependency.rb, line 20 def default if default? typecast(@default) else if block_given? yield else raise NoDefaultError, "No default declared for #{name}" end end end
default?()
click to toggle source
# File lib/medicine/dependency.rb, line 32 def default? !required? end
method_name()
click to toggle source
# File lib/medicine/dependency.rb, line 13 def method_name name end
required?()
click to toggle source
# File lib/medicine/dependency.rb, line 36 def required? @default == NoDefault end
Private Instance Methods
typecast(dependency)
click to toggle source
# File lib/medicine/dependency.rb, line 42 def typecast(dependency) case dependency.class.name when 'String' then Inflecto.constantize(Inflecto.camelize(dependency)) when 'Symbol' then typecast(dependency.to_s) when 'Proc' then dependency.call else dependency end end