Module: RSS::ListenerMixin
- Included in:
- REXMLListener, XMLParserListener, XMLScanListener
- Defined in:
- lib/rss/0.9.rb,
lib/rss/1.0.rb,
lib/rss/atom.rb,
lib/rss/parser.rb
Instance Attribute Summary collapse
-
#do_validate ⇒ Object
Returns the value of attribute do_validate.
-
#ignore_unknown_element ⇒ Object
Returns the value of attribute ignore_unknown_element.
-
#rss ⇒ Object
readonly
Returns the value of attribute rss.
Instance Method Summary collapse
- #initialize ⇒ Object
- #instruction(name, content) ⇒ Object
- #tag_end(name) ⇒ Object
- #tag_start(name, attributes) ⇒ Object
- #text(data) ⇒ Object
-
#xmldecl(version, encoding, standalone) ⇒ Object
set instance vars for version, encoding, standalone.
Instance Attribute Details
#do_validate ⇒ Object
Returns the value of attribute do_validate.
267 268 269 |
# File 'lib/rss/parser.rb', line 267 def do_validate @do_validate end |
#ignore_unknown_element ⇒ Object
Returns the value of attribute ignore_unknown_element.
266 267 268 |
# File 'lib/rss/parser.rb', line 266 def ignore_unknown_element @ignore_unknown_element end |
#rss ⇒ Object (readonly)
Returns the value of attribute rss.
264 265 266 |
# File 'lib/rss/parser.rb', line 264 def rss @rss end |
Instance Method Details
#initialize ⇒ Object
269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 |
# File 'lib/rss/parser.rb', line 269 def initialize @rss = nil @ignore_unknown_element = true @do_validate = true @ns_stack = [{"xml" => :xml}] @tag_stack = [[]] @text_stack = [''] @proc_stack = [] @last_element = nil @version = @encoding = @standalone = nil @xml_stylesheets = [] @xml_child_mode = false @xml_element = nil @last_xml_element = nil end |
#instruction(name, content) ⇒ Object
290 291 292 293 294 295 296 297 |
# File 'lib/rss/parser.rb', line 290 def instruction(name, content) if name == "xml-stylesheet" params = parse_pi_content(content) if params.has_key?("href") @xml_stylesheets << XMLStyleSheet.new(params) end end end |
#tag_end(name) ⇒ Object
352 353 354 355 356 357 358 359 360 361 362 |
# File 'lib/rss/parser.rb', line 352 def tag_end(name) if DEBUG p "end tag #{name}" p @tag_stack end text = @text_stack.pop = @tag_stack.pop pr = @proc_stack.pop pr.call(text, ) unless pr.nil? @ns_stack.pop end |
#tag_start(name, attributes) ⇒ Object
299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 |
# File 'lib/rss/parser.rb', line 299 def tag_start(name, attributes) @text_stack.push('') ns = @ns_stack.last.dup attrs = {} attributes.each do |n, v| if /\Axmlns(?:\z|:)/ =~ n ns[$'] = v else attrs[n] = v end end @ns_stack.push(ns) prefix, local = split_name(name) @tag_stack.last.push([_ns(ns, prefix), local]) @tag_stack.push([]) if @xml_child_mode previous = @last_xml_element element_attrs = attributes.dup unless previous ns.each do |ns_prefix, value| next if ns_prefix == "xml" key = ns_prefix.empty? ? "xmlns" : "xmlns:#{ns_prefix}" element_attrs[key] ||= value end end next_element = XML::Element.new(local, prefix.empty? ? nil : prefix, _ns(ns, prefix), element_attrs) previous << next_element if previous @last_xml_element = next_element pr = Proc.new do |text, | if previous @last_xml_element = previous else @xml_element = @last_xml_element @last_xml_element = nil end end @proc_stack.push(pr) else if @rss.nil? and respond_to?("initial_start_#{local}", true) __send__("initial_start_#{local}", local, prefix, attrs, ns.dup) elsif respond_to?("start_#{local}", true) __send__("start_#{local}", local, prefix, attrs, ns.dup) else start_else_element(local, prefix, attrs, ns.dup) end end end |
#text(data) ⇒ Object
364 365 366 367 368 369 370 |
# File 'lib/rss/parser.rb', line 364 def text(data) if @xml_child_mode @last_xml_element << data if @last_xml_element else @text_stack.last << data end end |
#xmldecl(version, encoding, standalone) ⇒ Object
set instance vars for version, encoding, standalone
286 287 288 |
# File 'lib/rss/parser.rb', line 286 def xmldecl(version, encoding, standalone) @version, @encoding, @standalone = version, encoding, standalone end |