Class: AttrExtras::AttrInitialize::ParamsBuilder
- Inherits:
-
Object
- Object
- AttrExtras::AttrInitialize::ParamsBuilder
- Defined in:
- lib/attr_extras/params_builder.rb
Constant Summary collapse
- REQUIRED_SIGN =
"!".freeze
Instance Method Summary collapse
- #default_values ⇒ Object
- #hash_args ⇒ Object
- #hash_args_names ⇒ Object
- #hash_args_required ⇒ Object
-
#initialize(names) ⇒ ParamsBuilder
constructor
A new instance of ParamsBuilder.
- #positional_args ⇒ Object
Constructor Details
#initialize(names) ⇒ ParamsBuilder
Returns a new instance of ParamsBuilder.
6 7 8 |
# File 'lib/attr_extras/params_builder.rb', line 6 def initialize(names) @names = names end |
Instance Method Details
#default_values ⇒ Object
32 33 34 35 36 37 38 39 40 |
# 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 ⇒ Object
17 18 19 20 21 |
# 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 ⇒ Object
23 24 25 |
# 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 ⇒ Object
27 28 29 30 |
# 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 ⇒ Object
13 14 15 |
# File 'lib/attr_extras/params_builder.rb', line 13 def positional_args @positional_args ||= names.take_while { |name| !name.is_a?(Array) } end |