class AttrExtras::AttrInitialize::ParamsBuilder
Constants
- REQUIRED_SIGN
Attributes
names[R]
Public Class Methods
new(names)
click to toggle source
# File lib/attr_extras/params_builder.rb, line 6 def initialize(names) @names = names end
Public Instance Methods
default_values()
click to toggle source
# File lib/attr_extras/params_builder.rb, line 32 def default_values @default_values ||= begin default_values_hash = names.flatten.select { |name| name.is_a?(Hash) }.inject(:merge) || {} default_values_hash.map { |name, value| [ remove_required_sign(name), value ] }.to_h end end
hash_args()
click to toggle source
# File lib/attr_extras/params_builder.rb, line 17 def hash_args @hash_args ||= (names - positional_args).flatten.flat_map { |name| name.is_a?(Hash) ? name.keys : name } end
hash_args_names()
click to toggle source
# File lib/attr_extras/params_builder.rb, line 23 def hash_args_names @hash_args_names ||= hash_args.map { |name| remove_required_sign(name) } end
hash_args_required()
click to toggle source
# File lib/attr_extras/params_builder.rb, line 27 def hash_args_required @hash_args_required ||= hash_args.select { |name| name.to_s.end_with?(REQUIRED_SIGN) }. map { |name| remove_required_sign(name) } end
positional_args()
click to toggle source
# File lib/attr_extras/params_builder.rb, line 13 def positional_args @positional_args ||= names.take_while { |name| !name.is_a?(Array) } end
Private Instance Methods
remove_required_sign(name)
click to toggle source
# File lib/attr_extras/params_builder.rb, line 44 def remove_required_sign(name) name.to_s.sub(/#{REQUIRED_SIGN}\z/, "").to_sym end