class Faker::Json

def add_depth_to_json(json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })

Returns:
  • (Hash{String => String}) -

Parameters:
  • options (Hash) -- Specifies a Faker gem class to use for nested keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
  • width (Integer) -- Specifies the number of nested key-value pairs.
  • json (Hash{String => String}) -- Specifies a Json.shallow_json and uses its keys as keys of the nested JSON.
def add_depth_to_json(json: shallow_json, width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
  options[:key] = "Faker::#{options[:key]}"
  options[:value] = "Faker::#{options[:value]}"
  hash = JSON.parse(json)
  hash.each do |key, _|
    add_hash_to_bottom(hash, [key], width, options)
  end
  JSON.generate(hash)
end

def add_hash(key_array, hash, width, options)

def add_hash(key_array, hash, width, options)
  string_to_eval = 'hash'
  key_array.length.times do |index|
    string_to_eval << "['#{key_array[index]}']"
  end
  string_to_eval << " = #{build_shallow_hash(width, options)}"
  eval(string_to_eval)
  hash
end

def add_hash_to_bottom(hash, key_array, width, options)

def add_hash_to_bottom(hash, key_array, width, options)
  key_string = build_keys_from_array(key_array)
  if eval("hash#{key_string}").is_a?(::Hash)
    eval("hash#{key_string}").each do |key, _|
      key_array << key
      add_hash_to_bottom(hash, key_array, width, options)
    end
  else
    add_hash(key_array, hash, width, options)
    key_array.pop
  end
end

def build_keys_from_array(key_array)

def build_keys_from_array(key_array)
  key_string = ''
  key_array.each do |value|
    key_string << "['#{value}']"
  end
  key_string
end

def build_shallow_hash(width, options)

def build_shallow_hash(width, options)
  key = options[:key]
  value = options[:value]
  hash = {}
  width.times do
    hash[eval(key)] = eval(value)
  end
  hash
end

def shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })

Returns:
  • (Hash{String => String}) -

Parameters:
  • options (Hash) -- Specifies a Faker gem class to use for keys and for values, respectably. options_hash = {key: Class.method, value: Class.method}
  • width (Integer) -- Specifies the number of key-value pairs.
def shallow_json(width: 3, options: { key: 'Name.first_name', value: 'Name.first_name' })
  options[:key] = "Faker::#{options[:key]}"
  options[:value] = "Faker::#{options[:value]}"
  hash = build_shallow_hash(width, options)
  JSON.generate(hash)
end