class RKit::Dsl::Base::Params

Attributes

params[R]
params_lambda[R]

Public Class Methods

new(params_lambda) click to toggle source
# File lib/r_kit/dsl/base/params.rb, line 4
def initialize params_lambda
  raise NoLambdaError unless params_lambda.lambda?

  @params_lambda = params_lambda
  @params = Hash.new{ |hash, key| hash[key] = params_struct.new }
end

Public Instance Methods

extract_local_variables(base) click to toggle source

TODO: extract local variables may be an independant service of rkit

# File lib/r_kit/dsl/base/params.rb, line 22
def extract_local_variables base
  base.singleton_class.send :prepend, RKit::Dsl::Base::LocalParams
  base.persisting_binding.eval(
    @params[base].to_hash.map{ |name, value| "#{ name }=#{ value.inspect }" }.join(";")
  )
end
extract_parameters(base, *args, &block) click to toggle source
# File lib/r_kit/dsl/base/params.rb, line 16
def extract_parameters base, *args, &block
  @params[base] = params_struct.new @params_lambda.extract_parameters(*args, &block)
end
try_parameters(*args, &block) click to toggle source
# File lib/r_kit/dsl/base/params.rb, line 12
def try_parameters *args, &block
  @params_lambda.call *args, &block
end

Private Instance Methods

params_names() click to toggle source
# File lib/r_kit/dsl/base/params.rb, line 30
        def params_names
  @params_names ||= @params_lambda.parameters.map{ |(_, name)| name }
end
params_struct() click to toggle source
# File lib/r_kit/dsl/base/params.rb, line 34
        def params_struct
  @params_struct ||= StrongStruct.new allowed: params_names
end