Parent

Files

Class Index [+]

Quicksearch

WSDL::XMLSchema::XSD2Ruby

Attributes

location[RW]
opt[R]
logger[RW]
basedir[RW]

Public Class Methods

new() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 41
41:   def initialize
42:     @location = nil
43:     @opt = {}
44:     @logger = Logger.new(STDERR)
45:     @basedir = nil
46:     @xsd = nil
47:     @name = nil
48:     @name_creator = WSDL::SOAP::ClassNameCreator.new
49:   end

Public Instance Methods

run() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 30
30:   def run
31:     unless @location
32:       raise RuntimeError, "XML Schema location not given"
33:     end
34:     @xsd = import(@location)
35:     @name = @opt['classdef'] || create_classname(@xsd)
36:     create_file
37:   end

Private Instance Methods

check_file(filename) click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 128
128:   def check_file(filename)
129:     if @basedir
130:       filename = File.join(basedir, filename)
131:     end
132:     if FileTest.exist?(filename)
133:       if @opt.key?('force')
134:         @logger.warn {
135:           "File '#{filename}' exists but overrides it."
136:         }
137:         true
138:       else
139:         @logger.warn {
140:           "File '#{filename}' exists.  #{$0} did not override it."
141:         }
142:         false
143:       end
144:     else
145:       @logger.info { "Creates file '#{filename}'." }
146:       true
147:     end
148:   end
create_classdef() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 58
58:   def create_classdef
59:     @logger.info { "Creating class definition." }
60:     @classdef_filename = @name + '.rb'
61:     check_file(@classdef_filename) or return
62:     write_file(@classdef_filename) do |f|
63:       f << WSDL::SOAP::ClassDefCreator.new(@xsd, @name_creator, @modulepath).dump
64:     end
65:   end
create_classname(xsd) click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 150
150:   def create_classname(xsd)
151:     name = nil
152:     if xsd.targetnamespace
153:       name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0]
154:     end
155:     if name.nil?
156:       'default'
157:     else
158:       XSD::CodeGen::GenSupport.safevarname(name)
159:     end
160:   end
create_file() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 51
51:   def create_file
52:     @modulepath = @opt['module_path']
53:     create_classdef if @opt.key?('classdef')
54:     create_mapping_registry if @opt.key?('mapping_registry')
55:     create_mapper if @opt.key?('mapper')
56:   end
create_mapper() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 76
76:   def create_mapper
77:     @logger.info { "Creating mapper definition." }
78:     @mapper_filename = @name + '_mapper.rb'
79:     check_file(@mapper_filename) or return
80:     write_file(@mapper_filename) do |f|
81:       f << dump_mapper
82:     end
83:   end
create_mapping_registry() click to toggle source
    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 67
67:   def create_mapping_registry
68:     @logger.info { "Creating mapping registry definition." }
69:     @mr_filename = @name + '_mapping_registry.rb'
70:     check_file(@mr_filename) or return
71:     write_file(@mr_filename) do |f|
72:       f << dump_mapping_registry
73:     end
74:   end
dump_mapper() click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 105
105:   def dump_mapper
106:     class_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'Mapper')
107:     if @modulepath
108:       class_name = [@modulepath, class_name].join('::')
109:     end
110:     mr_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry')
111:     c = XSD::CodeGen::ClassDef.new(class_name, 'XSD::Mapping::Mapper')
112:     c.def_require("#{@mr_filename}")
113:     c.def_method("initialize") do
114:       "super(#{mr_name}::Registry)"
115:     end
116:     c.dump
117:   end
dump_mapping_registry() click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 85
 85:   def dump_mapping_registry
 86:     defined_const = {}
 87:     creator = WSDL::SOAP::LiteralMappingRegistryCreator.new(@xsd, @name_creator, @modulepath, defined_const)
 88:     module_name = XSD::CodeGen::GenSupport.safeconstname(@name + 'MappingRegistry')
 89:     if @modulepath
 90:       module_name = [@modulepath, module_name].join('::')
 91:     end
 92:     m = XSD::CodeGen::ModuleDef.new(module_name)
 93:     m.def_require("xsd/mapping")
 94:     m.def_require("#{@classdef_filename}")
 95:     varname = 'Registry'
 96:     m.def_const(varname, '::SOAP::Mapping::LiteralRegistry.new')
 97:     m.def_code(creator.dump(varname))
 98:     #
 99:     defined_const.each do |ns, tag|
100:       m.def_const(tag, dq(ns))
101:     end
102:     m.dump
103:   end
import(location) click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 162
162:   def import(location)
163:     WSDL::XMLSchema::Importer.import(location)
164:   end
write_file(filename) click to toggle source
     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 119
119:   def write_file(filename)
120:     if @basedir
121:       filename = File.join(basedir, filename)
122:     end
123:     File.open(filename, "w") do |f|
124:       yield f
125:     end
126:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.