bradgessler-owidget 0.0.2 → 0.1.0

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.
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 0
3
- :patch: 2
4
2
  :major: 0
3
+ :minor: 1
4
+ :patch: 0
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require File.join(File.dirname(__FILE__), 'owidget/widget')
2
3
 
3
4
  module OWidget
4
5
  end
@@ -4,22 +4,24 @@ require 'open-uri'
4
4
 
5
5
  module OWidget
6
6
  class Consumer
7
- def initialize(content='', links=[])
8
- @content, @links = content, links
7
+ attr_reader :content
8
+
9
+ def initialize(content='')
10
+ @content = content
9
11
  end
10
12
 
11
- def links(force=false)
12
- if @links.empty? or force
13
- doc = Nokogiri::HTML(@content)
14
- @links = (doc/'html head link[rel="owidget"]').map{ |link| link['href'] }
15
- end
16
- return @links
13
+ def links
14
+ (Nokogiri::HTML(@content)/'html head link[rel="owidget"]').map{ |link| link['href'] }
17
15
  end
18
16
 
19
17
  def widgets
20
- links.map do |href|
21
- open(href).read
18
+ links.map do |link|
19
+ Widget.get(link)
22
20
  end
23
21
  end
22
+
23
+ def self.discover(url)
24
+ new open(url).read
25
+ end
24
26
  end
25
27
  end
@@ -0,0 +1,17 @@
1
+ require 'open-uri'
2
+
3
+ module OWidget
4
+ class Widget
5
+ attr_reader :content
6
+
7
+ def initialize(content)
8
+ @content = content
9
+ end
10
+
11
+ alias :to_s :content
12
+
13
+ def self.get(url)
14
+ new open(url).read
15
+ end
16
+ end
17
+ end
@@ -1,8 +1,30 @@
1
1
  require File.join(File.dirname(__FILE__), '../spec_helper')
2
2
 
3
+ describe OWidget::Consumer, 'discovery' do
4
+ it "should discover" do
5
+ OWidget::Consumer.should respond_to(:discover)
6
+ end
7
+
8
+ it "should instantiate OWidget::Consumer from discover" do
9
+ url = 'http://www.polleverywhere.com/multiple_choice_polls/MzkwNzM1MzEw'
10
+
11
+ OWidget::Consumer.should_receive(:open).with(url).and_return(io('polleverywhere.html'))
12
+ consumer = OWidget::Consumer.discover(url)
13
+ consumer.should be_instance_of(OWidget::Consumer)
14
+ consumer.content.should eql(content('polleverywhere.html'))
15
+ end
16
+ end
17
+
3
18
  describe OWidget::Consumer do
4
19
  before(:each) do
5
20
  @consumer = OWidget::Consumer.new(content('polleverywhere.html'))
21
+ @links = {
22
+ 'http://www.polleverywhere.com/multiple_choice_polls/MzkwNzM1MzEw.owidget' => io('polleverywhere.owidget')
23
+ }
24
+ end
25
+
26
+ it "should initialize with content" do
27
+ @consumer.content.should eql(content('polleverywhere.html'))
6
28
  end
7
29
 
8
30
  it "should have links" do
@@ -13,12 +35,22 @@ describe OWidget::Consumer do
13
35
  @consumer.should have(1).links
14
36
  end
15
37
 
38
+ it "should parse the correct link" do
39
+ @consumer.links.should include('http://www.polleverywhere.com/multiple_choice_polls/MzkwNzM1MzEw.owidget')
40
+ end
41
+
16
42
  it "should have widgets" do
17
43
  @consumer.should respond_to(:widgets)
18
44
  end
19
45
 
20
- it "should request widgets" do
21
- @consumer.should_receive(:open).with('http://www.polleverywhere.com/multiple_choice_polls/MzkwNzM1MzEw.owidget').and_return(io('polleverywhere.owidget'))
46
+ it "should have content" do
47
+ @consumer.should respond_to(:content)
48
+ end
49
+
50
+ it "should get widgets" do
51
+ @consumer.links.each do |link|
52
+ OWidget::Widget.should_receive(:open).with(link).and_return(@links[link])
53
+ end
22
54
  @consumer.widgets
23
55
  end
24
56
  end
@@ -0,0 +1,28 @@
1
+ require File.join(File.dirname(__FILE__), '../spec_helper')
2
+
3
+ describe OWidget::Widget, 'get' do
4
+ it "should get widget" do
5
+ url = 'http://www.polleverywhere.com/multiple_choice_polls/MzkwNzM1MzEw.owidget'
6
+ OWidget::Widget.should_receive(:open).with(url).and_return(io('polleverywhere.owidget'))
7
+ widget = OWidget::Widget.get(url)
8
+ widget.content.should eql(content('polleverywhere.owidget'))
9
+ end
10
+ end
11
+
12
+ describe OWidget::Widget do
13
+ before(:each) do
14
+ @widget = OWidget::Widget.new(content('polleverywhere.owidget'))
15
+ end
16
+
17
+ it "should have content" do
18
+ @widget.should respond_to(:content)
19
+ end
20
+
21
+ it "should initialize content" do
22
+ @widget.content.should eql(content('polleverywhere.owidget'))
23
+ end
24
+
25
+ it "should to_s content" do
26
+ @widget.to_s.should eql(content('polleverywhere.owidget'))
27
+ end
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bradgessler-owidget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-22 00:00:00 -07:00
12
+ date: 2009-04-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -35,12 +35,14 @@ files:
35
35
  - lib/owidget
36
36
  - lib/owidget/consumer
37
37
  - lib/owidget/consumer.rb
38
+ - lib/owidget/widget.rb
38
39
  - lib/owidget.rb
39
40
  - spec/fixtures
40
41
  - spec/fixtures/polleverywhere.html
41
42
  - spec/fixtures/polleverywhere.owidget
42
43
  - spec/owidget
43
44
  - spec/owidget/consumer_spec.rb
45
+ - spec/owidget/widget_spec.rb
44
46
  - spec/spec_helper.rb
45
47
  has_rdoc: true
46
48
  homepage: http://www.owidget.org