Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/trunk/lib/xsd/qname.rb

Revision 1891, 1.5 kB (checked in by nahi, 1 year ago)
  • wsdl2ruby.rb generated too much 'XSD::QName.new(...)' parts. let wsdl2ruby.rb extract common namespace definitions as constants.
  • let wsdl2ruby.rb generate member types as a comment for each class in classdef file.
  • closes #384.
  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 # XSD4R - XML QName definition.
2 # Copyright (C) 2000-2007  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
4 # This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
5 # redistribute it and/or modify it under the same terms of Ruby's license;
6 # either the dual license version in 2003, or any later version.
7
8
9 module XSD
10
11
12 class QName
13   attr_reader :namespace
14   attr_reader :name
15   attr_accessor :source
16
17   def initialize(namespace = nil, name = nil)
18     @namespace = namespace
19     @name = name
20     @source = nil
21   end
22
23   def dup_name(name)
24     XSD::QName.new(@namespace, name)
25   end
26
27   def dump(predefined_ns = nil)
28     ns = predefined_ns
29     ns ||= @namespace.nil? ? 'nil' : @namespace.dump
30     name = @name.nil? ? 'nil' : @name.dump
31     "XSD::QName.new(#{ns}, #{name})"
32   end
33
34   def match(rhs)
35     if rhs.namespace and (rhs.namespace != @namespace)
36       return false
37     end
38     if rhs.name and (rhs.name != @name)
39       return false
40     end
41     true
42   end
43
44   def ==(rhs)
45     !rhs.nil? and @namespace == rhs.namespace and @name == rhs.name
46   end
47
48   def ===(rhs)
49     (self == rhs)
50   end
51
52   def eql?(rhs)
53     (self == rhs)
54   end
55
56   def hash
57     @namespace.hash ^ @name.hash
58   end
59  
60   def to_s
61     "{#{ namespace }}#{ name }"
62   end
63
64   def inspect
65     sprintf("#<%s:0x%x %s>", self.class.name, __id__,
66       "{#{ namespace }}#{ name }")
67   end
68
69   NormalizedNameRegexp = /^\{([^}]*)\}(.*)$/
70   def parse(str)
71     NormalizedNameRegexp =~ str
72     self.new($1, $2)
73   end
74
75   EMPTY = QName.new.freeze
76 end
77
78
79 end
Note: See TracBrowser for help on using the browser.