Method: AppKernel::Function::Options#curry

Defined in:
lib/appkernel/curry.rb

#curry(parent, params) ⇒ Object

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/appkernel/curry.rb', line 11

def curry(parent, params)
  errors = Errors.new
  presets = parent.canonicalize([params], errors, false)
  raise ArgumentError, errors.all.join('; ') unless errors.empty?
  @presets.merge! presets
  applied, unapplied = parent.options.values.partition {|o| @presets.has_key?(o.name)}
  unapplied.each do |option|
    ingest option
  end
  applied.each do |option|
    if option.required? && @presets[option.name].nil?
      raise ArgumentError, "required option '#{option.name}' may not be nil"
    end
  end
end