astro-sax-machine 0.0.18 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -332,6 +332,17 @@ describe "SAXMachine" do
|
|
332
332
|
document.a.should == 'bar'
|
333
333
|
end
|
334
334
|
|
335
|
+
it "should parse multiple namespaces" do
|
336
|
+
klass = Class.new do
|
337
|
+
include SAXMachine
|
338
|
+
element :a, :xmlns => 'urn:test'
|
339
|
+
element :b, :xmlns => 'urn:test2'
|
340
|
+
end
|
341
|
+
document = klass.parse("<root xmlns='urn:test' xmlns:b='urn:test2'><b:b>bar</b:b><a>foo</a></root>")
|
342
|
+
document.a.should == 'foo'
|
343
|
+
document.b.should == 'bar'
|
344
|
+
end
|
345
|
+
|
335
346
|
context "when passing a default namespace" do
|
336
347
|
before :each do
|
337
348
|
@xmlns = 'urn:test'
|
@@ -478,4 +489,91 @@ describe "SAXMachine" do
|
|
478
489
|
f.entries[0].orig_link.should == 'http://www.pauldix.net/2008/09/marshal-data-to.html'
|
479
490
|
end
|
480
491
|
end
|
492
|
+
|
493
|
+
describe "another full example" do
|
494
|
+
|
495
|
+
RSS_XMLNS = 'http://purl.org/rss/1.0/'
|
496
|
+
ATOM_XMLNS = 'http://www.w3.org/2005/Atom'
|
497
|
+
class Entry
|
498
|
+
include SAXMachine
|
499
|
+
element :title, :xmlns => RSS_XMLNS
|
500
|
+
element :title, :xmlns => ATOM_XMLNS
|
501
|
+
element :link, :xmlns => RSS_XMLNS
|
502
|
+
element :link, :xmlns => ATOM_XMLNS, :value => 'href'
|
503
|
+
end
|
504
|
+
class Channel
|
505
|
+
include SAXMachine
|
506
|
+
element :title, :xmlns => RSS_XMLNS
|
507
|
+
element :title, :xmlns => ATOM_XMLNS
|
508
|
+
element :link, :xmlns => RSS_XMLNS
|
509
|
+
element :link, :xmlns => ATOM_XMLNS, :value => 'href'
|
510
|
+
elements :entry, :as => :entries, :class => Entry
|
511
|
+
elements :item, :as => :entries, :class => Entry
|
512
|
+
end
|
513
|
+
class Root
|
514
|
+
include SAXMachine
|
515
|
+
elements :rss, :as => :channels, :default_xmlns => RSS_XMLNS, :class => Channel
|
516
|
+
elements :feed, :as => :channels, :default_xmlns => ATOM_XMLNS, :class => Channel
|
517
|
+
end
|
518
|
+
|
519
|
+
context "when parsing a complex example" do
|
520
|
+
before :all do
|
521
|
+
@document = Root.parse(<<-eoxml).channels[0]
|
522
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
523
|
+
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"
|
524
|
+
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
525
|
+
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
526
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
527
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
528
|
+
xmlns:cc="http://web.resource.org/cc/">
|
529
|
+
<channel>
|
530
|
+
<title>Delicious/tag/pubsubhubbub</title>
|
531
|
+
<atom:link rel="self" type="application/rss+xml" href="http://feeds.delicious.com/v2/rss/tag/pubsubhubbub?count=15"/>
|
532
|
+
<link>http://delicious.com/tag/pubsubhubbub</link>
|
533
|
+
<description>recent bookmarks tagged pubsubhubbub</description>
|
534
|
+
</channel>
|
535
|
+
</rss>
|
536
|
+
eoxml
|
537
|
+
end
|
538
|
+
it "should parse the title" do
|
539
|
+
@document.title.should == 'Delicious/tag/pubsubhubbub'
|
540
|
+
end
|
541
|
+
it "should parse the link" do
|
542
|
+
@document.link.should == 'http://feeds.delicious.com/v2/rss/tag/pubsubhubbub?count=15'
|
543
|
+
end
|
544
|
+
end
|
545
|
+
context "when parsing a Twitter example" do
|
546
|
+
before :all do
|
547
|
+
@document = Root.parse(<<-eoxml).channels[0]
|
548
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
549
|
+
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
550
|
+
<channel>
|
551
|
+
<atom:link type="application/rss+xml" rel="self" href="http://twitter.com/statuses/user_timeline/5381582.rss"/>
|
552
|
+
<title>Twitter / julien51</title>
|
553
|
+
<link>http://twitter.com/julien51</link>
|
554
|
+
<description>Twitter updates from julien / julien51.</description>
|
555
|
+
<language>en-us</language>
|
556
|
+
<ttl>40</ttl>
|
557
|
+
<item>
|
558
|
+
<title>julien51: @github : I get an error when trying to build one of my gems (julien51-sax-machine), it seems related to another gem's gemspec.</title>
|
559
|
+
<description>julien51: @github : I get an error when trying to build one of my gems (julien51-sax-machine), it seems related to another gem's gemspec.</description>
|
560
|
+
<pubDate>Thu, 30 Jul 2009 01:00:30 +0000</pubDate>
|
561
|
+
<guid>http://twitter.com/julien51/statuses/2920716033</guid>
|
562
|
+
<link>http://twitter.com/julien51/statuses/2920716033</link>
|
563
|
+
</item>
|
564
|
+
</channel>
|
565
|
+
</rss>
|
566
|
+
eoxml
|
567
|
+
end
|
568
|
+
it "should parse the title" do
|
569
|
+
@document.title.should == 'Twitter / julien51'
|
570
|
+
end
|
571
|
+
it "should parse the link" do
|
572
|
+
@document.link.should == 'http://twitter.com/statuses/user_timeline/5381582.rss'
|
573
|
+
end
|
574
|
+
it "should find an entry" do
|
575
|
+
@document.entries.length.should == 1
|
576
|
+
end
|
577
|
+
end
|
578
|
+
end
|
481
579
|
end
|