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

root/branches/1_5/lib/wsdl/xmlSchema/content.rb

Revision 1827, 1.6 kB (checked in by nahi, 2 years ago)
  • handle choice + maxOccurs="unbounded" correctly. closes #327.
  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 # WSDL4R - XMLSchema content base definition for WSDL.
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 require 'wsdl/info'
10
11
12 module WSDL
13 module XMLSchema
14
15
16 class Content < Info
17   attr_reader :minoccurs
18   attr_reader :maxoccurs
19   attr_reader :elements
20
21   def initialize
22     super()
23     @minoccurs = 1
24     @maxoccurs = 1
25     @elements = XSD::NamedElements.new
26   end
27
28   def targetnamespace
29     parent.targetnamespace
30   end
31
32   def elementformdefault
33     parent.elementformdefault
34   end
35
36   def have_any?
37     false
38   end
39
40   def choice?
41     false
42   end
43
44   def map_as_array?
45     maxoccurs.nil? or maxoccurs != 1
46   end
47
48   def nested_elements
49     elements = XSD::NamedElements.new
50     @elements.each do |ele|
51       if ele.respond_to?(:nested_elements)
52         elements.concat(ele.nested_elements)
53       else
54         elements << ele
55       end
56     end
57     elements
58   end
59
60   def <<(element)
61     @elements << element
62   end
63
64   def parse_element(element)
65     case element
66     when ElementName
67       o = Element.new
68       o.form = elementformdefault
69       @elements << o
70       o
71     else
72       nil
73     end
74   end
75
76   def parse_attr(attr, value)
77     case attr
78     when MaxOccursAttrName
79       if value.source == 'unbounded'
80         @maxoccurs = nil
81       else
82         @maxoccurs = Integer(value.source)
83       end
84       value.source
85     when MinOccursAttrName
86       @minoccurs = Integer(value.source)
87     else
88       nil
89     end
90   end
91 end
92
93
94 end
95 end
Note: See TracBrowser for help on using the browser.