class Hash

Public Instance Methods

to_toml(path = "") click to toggle source
# File lib/toml/monkey_patch.rb, line 11
def to_toml(path = "")
  return "" if self.empty?

  tables = {}
  values = {}
  self.keys.sort.each do |key|
    val = self[key]
    if val.kind_of?(NilClass)
      next
    elsif val.toml_table? || val.toml_table_array?
      tables[key] = val
    else
      values[key] = val
    end
  end

  toml = ""
  values.each do |key, val|
    toml << "#{key} = #{val.to_toml(key)}\n"
  end

  tables.each do |key, val|
    key = "#{path}.#{key}" unless path.empty?
    toml_val = val.to_toml(key)
    if toml_val.empty?
      toml << "\n[#{key}]\n"
    else
      if val.toml_table?
        non_table_vals = val.values.reject do |v|
          v.toml_table? || v.toml_table_array?
        end

        # Only add the table key if there are non table values.
        if non_table_vals.length > 0
          toml << "\n[#{key}]\n"
        end
      end
      toml << toml_val
    end
  end

  toml
end