Method: ExtendIt::Dsl::DslMethods#dsl_use_hash

Defined in:
lib/extend_it/dsl.rb

#dsl_use_hash(hash_name, variable: nil) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/extend_it/dsl.rb', line 135

def dsl_use_hash(hash_name, variable: nil)
  hash_name = hash_name.ensure_symbol!(name_of: :local)
  variable = variable.ensure_symbol(name_of: :local)

  define_method "use_#{hash_name}" do |*names, except: nil|
    hash = dsl_get(variable || hash_name, {})
    keys = hash.keys
    names = names.ensure_array(:flatten, :ensure_symbol, :compact, :uniq)
    names = Dsl.expand_asterisk(names, keys)
    names = names.empty? ? keys : names & keys
    names -= except.ensure_array(:flatten, :ensure_symbol, :compact, make: true)
    hash.replace(Hash[names.map { |n| [n, hash[n]] }])
  end
end