module Howitzer::Utils::ArgumentConvertable
This module mixes in private utils methods for section and element dsl
Private Instance Methods
convert_arguments(args, options, block_args, block_options)
click to toggle source
# File lib/howitzer/utils/argument_convertable.rb, line 7 def convert_arguments(args, options, block_args, block_options) conv_args = args.map { |el| el.is_a?(Proc) ? proc_to_selector(el, block_args, block_options) : el } args_options = pop_options_from_array(conv_args) block_args_options = pop_options_from_array(block_args) conv_options = [args_options, options, block_args_options, block_options].map do |el| el.transform_keys(&:to_sym) end.reduce(&:merge).except(:lambda_args) [conv_args, conv_options] end
extract_lambda_args(block_args, block_options)
click to toggle source
# File lib/howitzer/utils/argument_convertable.rb, line 32 def extract_lambda_args(block_args, block_options) (block_args.first.is_a?(Hash) && block_args.first[:lambda_args]) || block_options[:lambda_args] end
lambda_args(*args, **keyword_args)
click to toggle source
# File lib/howitzer/utils/argument_convertable.rb, line 44 def lambda_args(*args, **keyword_args) { lambda_args: { args: args, keyword_args: keyword_args } } end
pop_options_from_array(value)
click to toggle source
# File lib/howitzer/utils/argument_convertable.rb, line 36 def pop_options_from_array(value) if value.last.is_a?(Hash) && !value.last.key?(:lambda_args) value.pop else {} end end
proc_to_selector(proc, block_args, block_options)
click to toggle source
# File lib/howitzer/utils/argument_convertable.rb, line 17 def proc_to_selector(proc, block_args, block_options) lambda_args = extract_lambda_args(block_args, block_options) if lambda_args if lambda_args[:keyword_args].present? proc.call(*lambda_args[:args], **lambda_args[:keyword_args]) else proc.call(*lambda_args[:args]) end else puts "WARNING! Passing lambda arguments with element options is deprecated.\n" \ "Please use 'lambda_args' method, for example: foo_element(lambda_args(title: 'Example'), wait: 10)" proc.call(*block_args.shift(proc.arity)) end end