class WsdlMapper::DomGeneration::DefaultEnumGenerator

Public Class Methods

new(generator, base: '::String', values_const_name: 'Values') click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 9
def initialize(generator, base: '::String', values_const_name: 'Values')
  @generator = generator
  @context = generator.context
  @base = base
  @values_const_name = values_const_name
end

Public Instance Methods

generate(ttg, result) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 16
def generate(ttg, result)
  modules = get_module_names ttg.name
  values_to_generate = get_values_to_generate(ttg)

  type_file_for ttg.name, result do |f|
    f.in_modules modules do
      in_class f, ttg do
        generate_constant_assignments f, values_to_generate
        generate_values_array f, values_to_generate
      end
    end
  end
  self
end

Protected Instance Methods

generate_constant_assignments(f, values_to_generate) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 36
def generate_constant_assignments(f, values_to_generate)
  values_to_generate.each do |vtg|
    f.statement value_constant_assignment vtg
  end
  f.after_constants
end
generate_values_array(f, values_to_generate) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 32
def generate_values_array(f, values_to_generate)
  f.literal_array @values_const_name, values_to_generate.map { |vtg| vtg.name.constant_name }
end
get_values_to_generate(ttg) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 43
def get_values_to_generate(ttg)
  ttg.type.enumeration_values.uniq(&:value).map do |ev|
    name = @generator.namer.get_enumeration_value_name ttg.type, ev
    TypeToGenerate.new ev, name
  end
end
in_class(f, ttg, &block) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 50
def in_class(f, ttg, &block)
  f.in_sub_class ttg.name.class_name, @base, &block
end
value_constant_assignment(vtg) click to toggle source
# File lib/wsdl_mapper/dom_generation/default_enum_generator.rb, line 54
def value_constant_assignment(vtg)
  "#{vtg.name.constant_name} = new(#{vtg.type.value.inspect}).freeze"
end