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



502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
# File 'lib/zonify.rb', line 502

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



524
525
526
527
528
529
# File 'lib/zonify.rb', line 524

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

#sorted_hash(h) ⇒ Object



517
518
519
520
521
522
523
# File 'lib/zonify.rb', line 517

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



530
531
532
533
534
535
# File 'lib/zonify.rb', line 530

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