Module: AWS::Core::XML::FrameStack
- Included in:
- SaxHandlers::LibXML, SaxHandlers::Nokogiri, SaxHandlers::Ox, SaxHandlers::REXML
- Defined in:
- lib/aws/core/xml/frame_stack.rb
Instance Method Summary collapse
-
#attributes(attributes) ⇒ nil
Increase the frame stack level by one by treating xml element attributes as nested elements.
-
#end_element ⇒ nil
Pops the top frame off the stack.
- #initialize(rules) ⇒ Object
-
#parse(xml) ⇒ Hash
Parses the xml string and returns a hash with the resutls.
-
#start_element(element_name, attributes = {}) ⇒ nil
Increase the frame stack level by one.
-
#text(text) ⇒ Object
Adds text to the current frame.
Instance Method Details
#attributes(attributes) ⇒ nil
Increase the frame stack level by one by treating xml element attributes as nested elements.
54 55 56 57 58 59 60 61 |
# File 'lib/aws/core/xml/frame_stack.rb', line 54 def attributes attributes attributes.each_pair do |attr_name, attr_value| attr_frame = @frame.build_child_frame(attr_name) attr_frame.add_text(attr_value) @frame.consume_child_frame(attr_frame) end nil end |
#end_element ⇒ nil
Pops the top frame off the stack. When closing frames their final value is computed.
67 68 69 70 71 72 73 |
# File 'lib/aws/core/xml/frame_stack.rb', line 67 def end_element *ignored parent = @frame.parent_frame child = @frame parent.consume_child_frame(child) @frame = @frame.parent_frame nil end |
#initialize(rules) ⇒ Object
23 24 25 |
# File 'lib/aws/core/xml/frame_stack.rb', line 23 def initialize rules @frame = RootFrame.new(rules) end |
#parse(xml) ⇒ Hash
Parses the xml string and returns a hash with the resutls.
35 36 37 38 |
# File 'lib/aws/core/xml/frame_stack.rb', line 35 def parse xml sax_parse(xml) @frame.value end |
#start_element(element_name, attributes = {}) ⇒ nil
Increase the frame stack level by one.
44 45 46 47 48 |
# File 'lib/aws/core/xml/frame_stack.rb', line 44 def start_element element_name, attributes = {} @frame = @frame.build_child_frame(element_name) self.attributes(attributes) nil end |
#text(text) ⇒ Object
Adds text to the current frame. Frames that only contain text and no child elements are leaf nodes and have raw string values.
78 79 80 |
# File 'lib/aws/core/xml/frame_stack.rb', line 78 def text text @frame.add_text(text) if @frame end |