# 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)
      unless toml_val.empty?
        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