class Hash

Public Instance Methods

to_hcl(indent = 0) click to toggle source
# File lib/hcl/monkey_patch.rb, line 22
def to_hcl(indent = 0)
  return "" if self.empty?
  hcl = ""
  spaces = " " * indent

  self.each do |k, v|
    next if v.hcl_object?
    next if v.hcl_list? and v.size > 0 and v.first.hcl_object?

    hcl << spaces
    hcl << HCL.escape_key(k) << " = "
    hcl << v.to_hcl(indent + 4)
    hcl << "\n"
  end

  self.each do |k, v|
    if v.hcl_object?
      key = HCL.escape_key(k)
      hcl << spaces
      hcl << key << " {\n"
      hcl << v.to_hcl(indent + 4)
      hcl << spaces << "}\n"
    end
    if v.hcl_list? and v.size > 0 and v.first.hcl_object?
      key = HCL.escape_key(k)
      hcl << spaces
      hcl << key << " = ["
      v.each do |i|
        if i.hcl_object?
          hcl << "\n" << spaces << "{\n"
        else
          hcl << spaces
        end
        hcl << i.to_hcl(indent + 4)
        if i.hcl_object?
          hcl << spaces << "},\n"
        end
      end
      hcl << spaces << "]\n"
    end
  end

  hcl
end