class Soybean::Generators::MappingGenerator

Attributes

name[R]

Public Class Methods

new(schema, wsdl) click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 12
def initialize(schema, wsdl)
  @schema = schema
  @wsdl = wsdl
  @name = namespace.underscore
  @name_creator = WSDL::SOAP::ClassNameCreator.new
  @defined_const = {}
end

Public Instance Methods

dir() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 20
def dir
  'mappings'
end
encoded_creator() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 59
def encoded_creator
  EncodedMappingRegistryCreator.new(@schema, @name_creator, module_name, @defined_const, mapping_cache[:encoded])
end
generate() { |join, dump| ... } click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 24
def generate
  m = ModuleDef.new("#{@name.camelize}")

  varname = 'EncodedRegistry'
  m.def_code(encoded_creator.dump(varname))

  varname = 'LiteralRegistry'
  m.def_code(literal_creator.dump(varname))

  @defined_const.each do |ns, tag|
    m.def_const(tag, dq(ns))
  end

  registry = ModuleDef.new("Mappings", [m])

  @schema.importedschema.values.map(&:targetnamespace).map do |ns|
    registry.def_require('mappings/'+URI.parse(ns).path[1..-2].underscore)
  end

  registry.def_require(type_path)

  registry.def_code('EncodedRegistry ||= ::SOAP::Mapping::EncodedRegistry.new')
  registry.def_code('LiteralRegistry ||= ::SOAP::Mapping::LiteralRegistry.new')

  if block_given?
    yield File.join(dir, filename), registry.dump
  else
    registry.dump
  end
end
literal_creator() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 55
def literal_creator
  LiteralMappingRegistryCreator.new(@schema, @name_creator, module_name, @defined_const, mapping_cache[:literal])
end
module_name() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 76
def module_name
  "::" + namespace.camelize
end
name_from_namespace(ns) click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 63
def name_from_namespace(ns)
  name = URI.parse(ns).path.split('/').delete_if { |part| part.empty? || part == 'type' }.last
  (name || 'base').underscore.gsub(/_service$/, '')
end
namespace() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 68
def namespace
  URI.parse(@schema.targetnamespace).path[1..-2]
end
type_path() click to toggle source
# File lib/soybean/generators/mapping_generator.rb, line 72
def type_path
  "types/" + namespace.underscore
end