class WSDL::XMLSchema::XSD2Ruby
Attributes
basedir[RW]
location[RW]
logger[RW]
opt[R]
Public Class Methods
new()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 43 def initialize @location = nil @opt = {} @logger = Logger.new(STDERR) @basedir = nil @xsd = nil @name = nil @name_creator = WSDL::SOAP::ClassNameCreator.new end
Public Instance Methods
run()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 32 def run unless @location raise RuntimeError, "XML Schema location not given" end @xsd = import(@location) @name = @opt['classdef'] || create_classname(@xsd) create_file end
Private Instance Methods
check_file(filename)
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 131 def check_file(filename) if @basedir filename = File.join(basedir, filename) end if FileTest.exist?(filename) if @opt.key?('force') @logger.warn { "File '#{filename}' exists but overrides it." } true else @logger.warn { "File '#{filename}' exists. #{$0} did not override it." } false end else @logger.info { "Creates file '#{filename}'." } true end end
create_classdef()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 60 def create_classdef @logger.info { "Creating class definition." } @classdef_filename = @name + '.rb' check_file(@classdef_filename) or return write_file(@classdef_filename) do |f| f << WSDL::SOAP::ClassDefCreator.new(@xsd, @name_creator, @modulepath).dump end end
create_classname(xsd)
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 153 def create_classname(xsd) name = nil if xsd.targetnamespace name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0] end if name.nil? 'default' else XSD::CodeGen::GenSupport.safevarname(name) end end
create_file()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 53 def create_file @modulepath = @opt['module_path'] create_classdef if @opt.key?('classdef') create_mapping_registry if @opt.key?('mapping_registry') create_mapper if @opt.key?('mapper') end
create_mapper()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 78 def create_mapper @logger.info { "Creating mapper definition." } @mapper_filename = @name + '_mapper.rb' check_file(@mapper_filename) or return write_file(@mapper_filename) do |f| f << dump_mapper end end
create_mapping_registry()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 69 def create_mapping_registry @logger.info { "Creating mapping registry definition." } @mr_filename = @name + '_mapping_registry.rb' check_file(@mr_filename) or return write_file(@mr_filename) do |f| f << dump_mapping_registry end end
dump_mapper()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 107 def dump_mapper class_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'Mapper') if @modulepath class_name = [@modulepath, class_name].join('::') end mr_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry') c = XSD::CodeGen::ClassDef.new(class_name, 'XSD::Mapping::Mapper') c.def_require("#{@mr_filename}") c.def_method("initialize") do "super(#{mr_name}::Registry)" end c.dump end
dump_mapping_registry()
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 87 def dump_mapping_registry defined_const = {} creator = WSDL::SOAP::LiteralMappingRegistryCreator.new(@xsd, @name_creator, @modulepath, defined_const) module_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry') if @modulepath module_name = [@modulepath, module_name].join('::') end m = XSD::CodeGen::ModuleDef.new(module_name) m.def_require("xsd/mapping") m.def_require("#{@classdef_filename}") varname = 'Registry' m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new') m.def_code(creator.dump(varname)) # defined_const.each do |ns, tag| m.def_const(tag, dq(ns)) end m.dump end
import(location)
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 165 def import(location) WSDL::XMLSchema::Importer.import(location) end
write_file(filename) { |f| ... }
click to toggle source
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 121 def write_file(filename) if @basedir filename = File.join(basedir, filename) end File.open(filename, "w") do |f| f.puts "# encoding: UTF-8" yield f end end