| Class | WSDL::XMLSchema::XSD2Ruby |
| In: |
lib/wsdl/xmlSchema/xsd2ruby.rb
|
| Parent: | Object |
| basedir | [RW] | |
| location | [RW] | |
| logger | [RW] | |
| opt | [R] |
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 35
35: def initialize
36: @location = nil
37: @opt = {}
38: @logger = Logger.new(STDERR)
39: @basedir = nil
40: @xsd = nil
41: @name = nil
42: end
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 24
24: def run
25: unless @location
26: raise RuntimeError, "XML Schema location not given"
27: end
28: @xsd = import(@location)
29: @name = create_classname(@xsd)
30: create_file
31: end
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 66
66: def check_file(filename)
67: if @basedir
68: filename = File.join(basedir, filename)
69: end
70: if FileTest.exist?(filename)
71: if @opt.key?('force')
72: @logger.warn {
73: "File '#{filename}' exists but overrides it."
74: }
75: true
76: else
77: @logger.warn {
78: "File '#{filename}' exists. #{$0} did not override it."
79: }
80: false
81: end
82: else
83: @logger.info { "Creates file '#{filename}'." }
84: true
85: end
86: end
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 48
48: def create_classdef
49: @logger.info { "Creating class definition." }
50: @classdef_filename = @name + '.rb'
51: check_file(@classdef_filename) or return
52: write_file(@classdef_filename) do |f|
53: f << WSDL::SOAP::ClassDefCreator.new(@xsd).dump
54: end
55: end
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 88
88: def create_classname(xsd)
89: name = nil
90: if xsd.targetnamespace
91: name = xsd.targetnamespace.scan(/[a-zA-Z0-9]+$/)[0]
92: end
93: if name.nil?
94: 'default'
95: else
96: XSD::CodeGen::GenSupport.safevarname(name)
97: end
98: end
# File lib/wsdl/xmlSchema/xsd2ruby.rb, line 100
100: def import(location)
101: WSDL::XMLSchema::Importer.import(location)
102: end