module ConfigVolumizer::Generator
Converts a {Hash} into a flattened {Hash} as a template for volumizing your configs
Public Class Methods
generate(data)
click to toggle source
Generates a flattened config out of a data hash
See Readme for an example
@param [Hash] data @return [Hash]
# File lib/config_volumizer/generator.rb, line 14 def generate(data) OpenStruct.new( env_hash: generate_env(data), mapping_hash: generate_mapping(data), ) end
Private Class Methods
generate_env(data)
click to toggle source
# File lib/config_volumizer/generator.rb, line 23 def generate_env(data) data.inject({}) do |result, (key, value)| process_env_item(result, key, value) result end end
generate_mapping(data)
click to toggle source
# File lib/config_volumizer/generator.rb, line 30 def generate_mapping(data) data.inject({}) do |result, (key, value)| result[key] = process_mapping_item(value) result end end
process_env_item(result, prefix, value)
click to toggle source
# File lib/config_volumizer/generator.rb, line 56 def process_env_item(result, prefix, value) case value when Array value.each_with_index do |item, index| process_env_item(result, "#{prefix}_#{index}", item) end when Hash value.each do |key, item| process_env_item(result, "#{prefix}_#{key}", item) end else result[prefix] = value end end
process_mapping_item(value)
click to toggle source
# File lib/config_volumizer/generator.rb, line 37 def process_mapping_item(value) case value when Array result = [] value.each_with_index do |item, index| result[index] = process_mapping_item(item) end result.uniq when Hash result = {} value.each do |key, item| result[key] = process_mapping_item(item) end result else :value end end