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