Class: RETS4R::Client::Metadata::CompactDocument
- Inherits:
-
Nokogiri::XML::SAX::Document
- Object
- Nokogiri::XML::SAX::Document
- RETS4R::Client::Metadata::CompactDocument
- Defined in:
- lib/rets4r/client/parsers/metadata.rb
Overview
Nokogiri SAX compact metadata parser
Constant Summary collapse
- DELIMITER =
"\t"
Class Method Summary collapse
Instance Method Summary collapse
- #characters(content) ⇒ Object
- #end_element(name) ⇒ Object
-
#initialize ⇒ CompactDocument
constructor
A new instance of CompactDocument.
- #parse(content) ⇒ Object
- #parse_file(filename = 'metadata.xml') ⇒ Object
- #start_element(name, raw_attrs = []) ⇒ Object
Constructor Details
#initialize ⇒ CompactDocument
Returns a new instance of CompactDocument.
107 108 109 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 107 def initialize @parser = Nokogiri::XML::SAX::Parser.new(self) end |
Class Method Details
.parse_file(filename) ⇒ Object
103 104 105 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 103 def self.parse_file(filename) new.parse_file(filename) end |
Instance Method Details
#characters(content) ⇒ Object
157 158 159 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 157 def characters content @current_content << content if receives_content? @stack.last[0] end |
#end_element(name) ⇒ Object
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 139 def end_element name case name.upcase when 'DATA' process_content_as_data when 'COLUMNS' process_content_as_columns when 'SYSTEM' # unlike the other tags here, SYSTEM cotains its own content so it # needs to be processed as well as removed from the stack. process_content_as_system @stack.pop when 'COMMENTS' process_content_as_comments else @stack.pop end end |
#parse(content) ⇒ Object
115 116 117 118 119 120 121 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 115 def parse(content) @metadata = Metadata.new @stack = [] @current_content = '' @parser.parse(content) @metadata end |
#parse_file(filename = 'metadata.xml') ⇒ Object
111 112 113 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 111 def parse_file(filename = 'metadata.xml') parse(File.open(filename)) end |
#start_element(name, raw_attrs = []) ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/rets4r/client/parsers/metadata.rb', line 123 def start_element name, raw_attrs = [] attrs = Hash[*raw_attrs.flatten] case name.upcase when 'DATA' @current_content = '' when 'COLUMNS' @current_content = '' @columns = [] when 'COMMENTS' @current_content = '' else @stack << [name.upcase, attrs] end end |