Parent

Included Modules

Files

Class Index [+]

Quicksearch

WSDL::XMLSchema::Parser

Public Class Methods

new(opt = {}) click to toggle source
    # File lib/wsdl/xmlSchema/parser.rb, line 50
50:   def initialize(opt = {})
51:     @parser = XSD::XMLParser.create_parser(self, opt)
52:     @parsestack = nil
53:     @lastnode = nil
54:     @ignored = {}
55:     @location = opt[:location]
56:     @originalroot = opt[:originalroot]
57:   end

Public Instance Methods

characters(text) click to toggle source
    # File lib/wsdl/xmlSchema/parser.rb, line 87
87:   def characters(text)
88:     lastframe = @parsestack.last
89:     if lastframe
90:       # Need not to be cloned because character does not have attr.
91:       ns = lastframe.ns
92:       decode_text(ns, text)
93:     else
94:       p text if $DEBUG
95:     end
96:   end
charset() click to toggle source
    # File lib/wsdl/xmlSchema/parser.rb, line 67
67:   def charset
68:     @parser.charset
69:   end
end_element(name) click to toggle source
     # File lib/wsdl/xmlSchema/parser.rb, line 98
 98:   def end_element(name)
 99:     lastframe = @parsestack.pop
100:     unless name == lastframe.name
101:       raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
102:     end
103:     decode_tag_end(lastframe.ns, lastframe.node)
104:     @lastnode = lastframe.node
105:   end
parse(string_or_readable) click to toggle source
    # File lib/wsdl/xmlSchema/parser.rb, line 59
59:   def parse(string_or_readable)
60:     @parsestack = []
61:     @lastnode = nil
62:     @textbuf = ''
63:     @parser.do_parse(string_or_readable)
64:     @lastnode
65:   end
start_element(name, attrs) click to toggle source
    # File lib/wsdl/xmlSchema/parser.rb, line 71
71:   def start_element(name, attrs)
72:     lastframe = @parsestack.last
73:     ns = parent = nil
74:     if lastframe
75:       ns = lastframe.ns
76:       parent = lastframe.node
77:     else
78:       ns = XSD::NS.new
79:       parent = nil
80:     end
81:     # ns might be the same
82:     ns, attrs = XSD::XMLParser.filter_ns(ns, attrs)
83:     node = decode_tag(ns, name, attrs, parent)
84:     @parsestack << ParseFrame.new(ns, name, node)
85:   end

Private Instance Methods

decode_tag(ns, name, attrs, parent) click to toggle source
     # File lib/wsdl/xmlSchema/parser.rb, line 109
109:   def decode_tag(ns, name, attrs, parent)
110:     o = nil
111:     elename = ns.parse(name)
112:     if !parent
113:       if elename == SchemaName
114:         o = Schema.parse_element(elename)
115:         o.location = @location
116:       else
117:         raise UnknownElementError.new("unknown element: #{elename}")
118:       end
119:       o.root = @originalroot if @originalroot   # o.root = o otherwise
120:     else
121:       if elename == AnnotationName
122:         # only the first annotation element is allowed for each element.
123:         o = Annotation.new
124:       else
125:         o = parent.parse_element(elename)
126:       end
127:       if o.nil?
128:         unless @ignored.key?(elename)
129:           warn("ignored element: #{elename} of #{parent.class}")
130:           @ignored[elename] = elename
131:         end
132:         o = Documentation.new  # which accepts any element.
133:       end
134:       # node could be a pseudo element.  pseudo element has its own parent.
135:       o.root = parent.root
136:       o.parent = parent if o.parent.nil?
137:     end
138:     attrs.each do |key, value|
139:       attr_ele = ns.parse(key, true)
140:       value_ele = ns.parse(value, false)
141:       value_ele.source = value  # for recovery; value may not be a QName
142:       if attr_ele == IdAttrName
143:         o.id = value_ele
144:       else
145:         if o.parse_attr(attr_ele, value_ele).nil?
146:           unless @ignored.key?(attr_ele)
147:             warn("ignored attr: #{attr_ele}")
148:             @ignored[attr_ele] = attr_ele
149:           end
150:         end
151:       end
152:     end
153:     o
154:   end
decode_tag_end(ns, node) click to toggle source
     # File lib/wsdl/xmlSchema/parser.rb, line 156
156:   def decode_tag_end(ns, node)
157:     node.parse_epilogue
158:   end
decode_text(ns, text) click to toggle source
     # File lib/wsdl/xmlSchema/parser.rb, line 160
160:   def decode_text(ns, text)
161:     @textbuf << text
162:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.