class Cfdef::DSL::Converter

Public Class Methods

convert(exported, options = {}) click to toggle source
# File lib/cfdef/dsl/converter.rb, line 4
def self.convert(exported, options = {})
  self.new(exported, options).convert
end
new(exported, options = {}) click to toggle source
# File lib/cfdef/dsl/converter.rb, line 8
def initialize(exported, options = {})
  @exported = exported
  @options = options
end

Public Instance Methods

convert() click to toggle source
# File lib/cfdef/dsl/converter.rb, line 13
def convert
  output_distributions(@exported.fetch(:distributions))

  # TODO:
  #output_streaming_distributions(@exported.fetch(:streaming_distributions))
end

Private Instance Methods

output_distribution(dist_id, distribution) click to toggle source
# File lib/cfdef/dsl/converter.rb, line 32
  def output_distribution(dist_id, distribution)
    dslh_opts = {initial_depth: 1, force_dump_braces: true}
    dslh_opts[:use_braces_instead_of_do_end] = true if @options[:use_braces]
    dist_conf = Dslh.deval(distribution, dslh_opts).strip

    if @options[:use_braces]
      <<-EOS
distribution(#{dist_id.inspect}) {
  #{dist_conf}
}
      EOS
    else
      <<-EOS
distribution #{dist_id.inspect} do
  #{dist_conf}
end
      EOS
    end
  end
output_distributions(distributions_by_id) click to toggle source
# File lib/cfdef/dsl/converter.rb, line 22
def output_distributions(distributions_by_id)
  distributions = []

  distributions_by_id.sort_by(&:first).each do |dist_id, distribution|
    distributions << output_distribution(dist_id, distribution)
  end

  distributions.join("\n")
end