Module: Zonify::YAML

Extended by:
YAML
Included in:
YAML
Defined in:
lib/zonify.rb

Instance Method Summary collapse

Instance Method Details

#format(records, suffix = '') ⇒ Object



467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
# File 'lib/zonify.rb', line 467

def format(records, suffix='')
  _suffix_ = Zonify._dot(Zonify.dot_(suffix))
  entries = records.keys.sort.map do |k|
    if k == 'CNAME'
      STDERR.puts(::YAML.dump(records))
      abort "A problem was found // #{ARGV[0]}"
    end
    [ k + ":\n" ] + records[k].keys.sort_by{|kk| kk.to_s }.map do |kk|
      sorted = Zonify::YAML.sorted_hash(records[k][kk])
      lines = Zonify::YAML.trim_lines(sorted)
      [ kk + ":\n" ] + lines.map{|ln| '  ' + ln }
    end.flatten.map{|ln| '  ' + ln }
  end.flatten.map{|ln| '  ' + ln }.join
  "suffix: #{_suffix_}\nrecords:\n" + entries
end

#read(text) ⇒ Object



489
490
491
492
493
494
# File 'lib/zonify.rb', line 489

def read(text)
  yaml = ::YAML.load(text)
  if yaml['suffix']
    [yaml['suffix'], (yaml['records'] or {})]
  end
end

#sorted_hash(h) ⇒ Object



482
483
484
485
486
487
488
# File 'lib/zonify.rb', line 482

def sorted_hash(h)
  result = ::YAML::quick_emit(h.object_id, {}) do |out|
    out.map("") do |map|
      h.keys.sort_by{|k| k.to_s }.each{|k| map.add(k, h[k]) }
    end
  end
end

#trim_lines(yaml) ⇒ Object



495
496
497
498
499
500
# File 'lib/zonify.rb', line 495

def trim_lines(yaml)
 lines = yaml.lines.to_a
 lines.shift if /^---/.match(lines[0])
 lines.pop if /^$/.match(lines[-1])
 lines
end