PHP 8.2.31
Preview: xsd2ruby.rb Size: 2.08 KB
//proc/thread-self/root/opt/alt/ruby18/lib64/ruby/1.8/wsdl/xmlSchema/xsd2ruby.rb

# XSD4R - XSD to ruby mapping library.
# Copyright (C) 2005  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.

# This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
# redistribute it and/or modify it under the same terms of Ruby's license;
# either the dual license version in 2003, or any later version.


require 'xsd/codegen/gensupport'
require 'wsdl/xmlSchema/importer'
require 'wsdl/soap/classDefCreator'


module WSDL
module XMLSchema


class XSD2Ruby
  attr_accessor :location
  attr_reader :opt
  attr_accessor :logger
  attr_accessor :basedir

  def run
    unless @location
      raise RuntimeError, "XML Schema location not given"
    end
    @xsd = import(@location)
    @name = create_classname(@xsd)
    create_file
  end

private

  def initialize
    @location = nil
    @opt = {}
    @logger = Logger.new(STDERR)
    @basedir = nil
    @xsd = nil
    @name = nil
  end

  def create_file
    create_classdef
  end

  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).dump
    end
  end

  def write_file(filename)
    if @basedir
      filename = File.join(basedir, filename)
    end
    File.open(filename, "w") do |f|
      yield f
    end
  end

  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

  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

  def import(location)
    WSDL::XMLSchema::Importer.import(location)
  end
end


end
end

Directory Contents

Dirs: 0 × Files: 25

Name Size Perms Modified Actions
1.15 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
601 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.06 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
2.52 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.15 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.85 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
2.91 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.59 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.25 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.31 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
645 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.42 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
2.18 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1014 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
594 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.91 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
642 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
3.02 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.15 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.15 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
938 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.46 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
1.37 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download
584 B lrw-r--r-- 2007-02-12 23:01:19
Edit Download
2.08 KB lrw-r--r-- 2007-02-12 23:01:19
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).