Class WSDL::XMLSchema::XSD2Ruby
In: lib/wsdl/xmlSchema/xsd2ruby.rb
Parent: Object

Methods

Attributes

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

Public Class methods

[Source]

    # 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

Public Instance methods

[Source]

    # 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

Private Instance methods

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 44
44:   def create_file
45:     create_classdef
46:   end

[Source]

     # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 100
100:   def import(location)
101:     WSDL::XMLSchema::Importer.import(location)
102:   end

[Source]

    # File lib/wsdl/xmlSchema/xsd2ruby.rb, line 57
57:   def write_file(filename)
58:     if @basedir
59:       filename = File.join(basedir, filename)
60:     end
61:     File.open(filename, "w") do |f|
62:       yield f
63:     end
64:   end

[Validate]