feedalizer 0.1.1 → 0.1.2

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.
data/CHANGELOG.txt CHANGED
@@ -1,11 +1,7 @@
1
1
  Noteworthy changes:
2
2
 
3
- -- 2008-03-27
4
- Improved examples/sydsvenskan-nemi.rb.
5
-
6
- -- 2007-07-09
7
- Feedalizer now uses RSS 2.0 instead of RSS 1.0.
8
-
9
- -- 2006-08-23
10
- Added optional limit parameter to scrape_items.
11
- Thanks to Thanh Vinh Tang for the hint that it is needed.
3
+ 2006-08-23: Added optional limit parameter to scrape_items. (Thanks to Thanh Vinh Tang for the hint that it is needed.)
4
+ 2006-10-11: Release of version 0.1.0.
5
+ 2007-07-09: Feedalizer now uses RSS 2.0 instead of RSS 1.0.
6
+ 2008-03-27: Improved examples/sydsvenskan-nemi.rb.
7
+ 2008-03-27: Release of version 0.1.1.
data/bin/feedalizer CHANGED
File without changes
data/examples/pjvault.rb CHANGED
@@ -9,7 +9,6 @@ require "time"
9
9
 
10
10
  feedalize("http://pjvault.com/news.html") do
11
11
  feed.title = "Pearl Jam Vault"
12
- feed.about = "..."
13
12
  feed.description = "Pearl Jam News and Reviews"
14
13
 
15
14
  scrape_items("li") do |rss_item, html_element|
@@ -5,11 +5,8 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
5
5
  require "feedalizer"
6
6
  require "time"
7
7
 
8
- url = "http://sydsvenskan.se/serier/nemi/index.jsp?context=serie"
9
-
10
- feedalize(url) do
8
+ feedalize("http://sydsvenskan.se/serier/nemi/index.jsp?context=serie") do
11
9
  feed.title = "Nemi"
12
- feed.about = "..."
13
10
  feed.description = "Daily Nemi strip scraped from Sydsvenskan"
14
11
 
15
12
  scrape_items("option") do |rss_item, html_element|
@@ -25,5 +22,7 @@ feedalize(url) do
25
22
  rss_item.guid.content = link
26
23
  end
27
24
 
28
- output!(ARGV[0] ? File.open(ARGV[0], "w") : STDOUT)
25
+ if __FILE__ == $0
26
+ output!(ARGV[0] ? File.open(ARGV[0], "w") : STDOUT)
27
+ end
29
28
  end
data/lib/feedalizer.rb CHANGED
@@ -3,20 +3,20 @@ require "open-uri"
3
3
  require "hpricot"
4
4
 
5
5
  class Feedalizer
6
- VERSION = "0.1.1"
6
+ VERSION = "0.1.2"
7
+ IDENTIFIER = "Feedalizer/#{VERSION} (http://termos.vemod.net/feedalizer)"
7
8
 
8
- attr_reader :source
9
+ attr_reader :page
9
10
 
10
11
  def initialize(url, &block)
11
- @source = grab_page(url)
12
+ @page = grab_page(url)
12
13
  @rss = RSS::Maker::RSS20.new
13
14
 
14
- feed.generator = "Feedalizer/#{VERSION} (http://termos.vemod.net/feedalizer)"
15
+ feed.generator = IDENTIFIER
15
16
  feed.link = url
17
+ feed.description = "Scraped from #{url}"
16
18
 
17
19
  instance_eval(&block) if block
18
-
19
- debug! if $DEBUG
20
20
  end
21
21
 
22
22
  def feed
@@ -24,7 +24,7 @@ class Feedalizer
24
24
  end
25
25
 
26
26
  def scrape_items(hpricot_query, limit = 15)
27
- elements = @source.search(hpricot_query)
27
+ elements = @page.search(hpricot_query)
28
28
 
29
29
  elements.first(limit).each do |html_element|
30
30
  rss_item = @rss.items.new_item
@@ -36,11 +36,12 @@ class Feedalizer
36
36
  open(url) { |io| Hpricot(io) }
37
37
  end
38
38
 
39
- # For backwards-compatibility
40
- alias_method :parse_source, :grab_page
41
-
42
39
  def output
43
- @rss.to_rss.to_s unless $DEBUG
40
+ if @rss.respond_to?(:to_feed) # Ruby >= 1.8.7
41
+ @rss.to_feed.to_s
42
+ else
43
+ @rss.to_rss.to_s
44
+ end
44
45
  end
45
46
 
46
47
  def output!(target = STDOUT)
@@ -49,10 +50,13 @@ class Feedalizer
49
50
 
50
51
  def debug!
51
52
  @rss.items.each do |item|
52
- STDERR.puts [ item.title, item.date, item.link ].join("\n")
53
- STDERR.puts
53
+ STDERR.puts [ item.title, item.date, item.link ].join("; ")
54
54
  end
55
55
  end
56
+
57
+ # Backwards-compatibility
58
+ alias_method :parse_source, :grab_page
59
+ alias_method :source, :page
56
60
  end
57
61
 
58
62
  # A handy wrapper for Feedalizer.new :-)
@@ -14,7 +14,7 @@ class TestFeedalizer < Test::Unit::TestCase
14
14
 
15
15
  def test_construction
16
16
  assert_kind_of RSS::Maker::RSS20::Channel, @feedalizer.feed
17
- assert_kind_of Hpricot::Doc, @feedalizer.source
17
+ assert_kind_of Hpricot::Doc, @feedalizer.page
18
18
  end
19
19
 
20
20
  def test_block
@@ -23,12 +23,13 @@ class TestFeedalizer < Test::Unit::TestCase
23
23
  assert_kind_of Feedalizer, inside
24
24
  end
25
25
 
26
- def test_default_feed_link
26
+ def test_defaults
27
27
  assert_equal TEST_FILE, @feedalizer.feed.link
28
+ assert_equal "Scraped from #{TEST_FILE}", @feedalizer.feed.description
28
29
  end
29
30
 
30
- def test_source
31
- assert_equal "Test", @feedalizer.source.search("html/head/title").text
31
+ def test_page
32
+ assert_equal "Test", @feedalizer.page.search("html/head/title").text
32
33
  end
33
34
 
34
35
  def test_scrape_items
@@ -76,4 +77,9 @@ class TestFeedalizer < Test::Unit::TestCase
76
77
  assert output.include?("<rss")
77
78
  assert output.size > 320
78
79
  end
80
+
81
+ def test_backwards_compatibility
82
+ assert @feedalizer.respond_to?(:page)
83
+ assert @feedalizer.respond_to?(:parse_source)
84
+ end
79
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedalizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoffer Sawicki
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-03-27 00:00:00 +01:00
12
+ date: 2009-11-23 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hpricot
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -23,14 +24,18 @@ dependencies:
23
24
  version:
24
25
  - !ruby/object:Gem::Dependency
25
26
  name: hoe
27
+ type: :development
26
28
  version_requirement:
27
29
  version_requirements: !ruby/object:Gem::Requirement
28
30
  requirements:
29
31
  - - ">="
30
32
  - !ruby/object:Gem::Version
31
- version: 1.5.1
33
+ version: 1.8.0
32
34
  version:
33
- description: Feedalizer is a *small* Ruby library that glues together Hpricot with the standard RSS library in a way that makes it easy to transform web pages into RSS feeds. If you ask me, it makes it *too* easy.
35
+ description: |-
36
+ Feedalizer is a *small* Ruby library that glues together Hpricot with the
37
+ standard RSS library in a way that makes it easy to transform web pages into
38
+ RSS feeds. If you ask me, it makes it *too* easy.
34
39
  email:
35
40
  - christoffer.sawicki@gmail.com
36
41
  executables:
@@ -59,6 +64,8 @@ files:
59
64
  - TODO.txt
60
65
  has_rdoc: true
61
66
  homepage: http://termos.vemod.net/feedalizer
67
+ licenses: []
68
+
62
69
  post_install_message:
63
70
  rdoc_options:
64
71
  - --main
@@ -80,9 +87,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
87
  requirements: []
81
88
 
82
89
  rubyforge_project: feedalizer
83
- rubygems_version: 1.0.1
90
+ rubygems_version: 1.3.5
84
91
  signing_key:
85
- specification_version: 2
92
+ specification_version: 3
86
93
  summary: Transforms web pages into RSS feeds
87
94
  test_files: []
88
95