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.
265 266 267 |
# File 'lib/rss/parser.rb', line 265 def do_validate @do_validate end |
#ignore_unknown_element ⇒ Object
Returns the value of attribute ignore_unknown_element.
264 265 266 |
# File 'lib/rss/parser.rb', line 264 def ignore_unknown_element @ignore_unknown_element end |
#rss ⇒ Object (readonly)
Returns the value of attribute rss.
262 263 264 |
# File 'lib/rss/parser.rb', line 262 def rss @rss end |
Instance Method Details
#initialize ⇒ Object
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 |
# File 'lib/rss/parser.rb', line 267 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
288 289 290 291 292 293 294 295 |
# File 'lib/rss/parser.rb', line 288 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
350 351 352 353 354 355 356 357 358 359 360 |
# File 'lib/rss/parser.rb', line 350 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
297 298 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 |
# File 'lib/rss/parser.rb', line 297 def tag_start(name, attributes) @text_stack.push('') ns = @ns_stack.last.dup attrs = {} attributes.each do |n, v| if /\Axmlns(?:\z|:)/ =~ n ns[$POSTMATCH] = 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
362 363 364 365 366 367 368 |
# File 'lib/rss/parser.rb', line 362 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
284 285 286 |
# File 'lib/rss/parser.rb', line 284 def xmldecl(version, encoding, standalone) @version, @encoding, @standalone = version, encoding, standalone end |