Class: WSDL::XMLSchema::Parser
- Inherits:
-
Object
- Object
- WSDL::XMLSchema::Parser
show all
- Includes:
- XSD
- Defined in:
- lib/wsdl/xmlSchema/parser.rb
Defined Under Namespace
Classes: AttributeConstraintError, ElementConstraintError, FormatDecodeError, ParseError, ParseFrame, UnexpectedElementError, UnknownAttributeError, UnknownElementError
Instance Method Summary
collapse
Constructor Details
#initialize(opt = {}) ⇒ Parser
Returns a new instance of Parser.
50
51
52
53
54
55
56
57
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 50
def initialize(opt = {})
@parser = XSD::XMLParser.create_parser(self, opt)
@parsestack = nil
@lastnode = nil
@ignored = {}
@location = opt[:location]
@originalroot = opt[:originalroot]
end
|
Instance Method Details
#characters(text) ⇒ Object
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 86
def characters(text)
lastframe = @parsestack.last
if lastframe
ns = lastframe.ns
decode_text(ns, text)
else
p text if $DEBUG
end
end
|
#charset ⇒ Object
67
68
69
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 67
def charset
@parser.charset
end
|
#end_element(name) ⇒ Object
97
98
99
100
101
102
103
104
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 97
def end_element(name)
lastframe = @parsestack.pop
unless name == lastframe.name
raise UnexpectedElementError.new("closing element name '#{name}' does not match with opening element '#{lastframe.name}'")
end
decode_tag_end(lastframe.ns, lastframe.node)
@lastnode = lastframe.node
end
|
#parse(string_or_readable) ⇒ Object
59
60
61
62
63
64
65
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 59
def parse(string_or_readable)
@parsestack = []
@lastnode = nil
@textbuf = ''
@parser.do_parse(string_or_readable)
@lastnode
end
|
#start_element(name, attrs) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/wsdl/xmlSchema/parser.rb', line 71
def start_element(name, attrs)
lastframe = @parsestack.last
ns = parent = nil
if lastframe
ns = lastframe.ns.clone_ns
parent = lastframe.node
else
ns = XSD::NS.new
parent = nil
end
attrs = XSD::XMLParser.filter_ns(ns, attrs)
node = decode_tag(ns, name, attrs, parent)
@parsestack << ParseFrame.new(ns, name, node)
end
|