zomgrss 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ README.markdown
2
+ lib/**/*.rb
3
+ LICENSE
@@ -0,0 +1,22 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
22
+ examples/sample.db
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Federico Builes
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,170 @@
1
+ ZOMGRSS
2
+ =======
3
+ ZOMGRSS is a Ruby gem to create RSS feeds from your Ruby collections.
4
+
5
+ Installation
6
+ -----------
7
+
8
+ $ gem install zomgrss
9
+
10
+ Example
11
+ -------
12
+
13
+ class BlogPost < ActiveRecord::Base
14
+ rss_me
15
+ end
16
+
17
+ print BlogPost.to_rss
18
+
19
+ # => (no line-breaks in original)
20
+ <?xml version="1.0" encoding="UTF-8"?>
21
+ <rss version="2.0">
22
+ <channel>
23
+ <title>Your blog!</title>
24
+ <description>A nice description of your emo posts</description>
25
+ <link>http://example.com/blog</link>
26
+ <item>
27
+ <title>My first post</title>
28
+ <link isPermaLink="false">http://example.com/blog/1</link>
29
+ <description>Isnt this super interesting?</description>
30
+ <pubDate>Sat, 22 May 2010 21:38:17 -0500</pubDate>
31
+ <guid>1@http://exmaple.com/blog/</guid>
32
+ </item>
33
+ <item>
34
+ <title>My second post</title>
35
+ <link isPermaLink="false">http://example.com/blog/2</link>
36
+ <description>I wish my lawn was emo so I could stop doing silly jokes</description>
37
+ <pubDate>Sat, 22 May 2010 21:38:17 -0500</pubDate>
38
+ <guid>2@http://exmaple.com/blog/</guid>
39
+ </item>
40
+ </channel>
41
+ </rss>
42
+
43
+ You can see more examples in the `examples/` folder.
44
+
45
+ Usage
46
+ -----
47
+ For a basic dose of ZOMGRSS just call `rss_me` in your class and then call `Class.to_rss`. Example:
48
+
49
+ class BlogPost
50
+ include DataMapper::Resource
51
+ rss_me
52
+
53
+ property :id, Serial
54
+ property :title, String, :required => true
55
+ property :body, Text, :required => true
56
+ property :created_at, DateTime
57
+ end
58
+
59
+ BlogPost.to_rss # => returns the RSS feed for all the objects in BlogPost.
60
+
61
+ ZOMGRSS expects your class to have four basic attributes: `id`, `title`, `body` and `created_at`. These
62
+ are used to populate the RSS title, description, GUID and pubDate fields of each item in your feed. Users
63
+ of DataMapper and ActiveRecord should have instant access to the `id` and `created_at` fields. Read
64
+ Custom Options to find out how to modify these.
65
+
66
+ Your RSS feed also include three important fields:
67
+
68
+ * `title`: Your feed's title (i.e. _Brian's Emo Blog_)
69
+ * `description`: A description of your feed (i.e. _I'm Brian and I like to cut myself._)
70
+ * `base_url`: A base URL for your feed (i.e. _http://blog.emobrian.com/_)
71
+
72
+ To set these fields just call the `rss_options` class method:
73
+
74
+ BlogPost.rss_options[:title] = "My new not emo blog"
75
+ BlogPost.rss_options[:description] = "Emo no more, I'm HipsterBrian now"
76
+ BlogPost.rss_options[:base_url] = "http://blog.hipsterbrian.com/"
77
+
78
+ You'll also want to modify the `link_format` option, which specifies the format of the links used
79
+ in your site. A typical site will use the same URL for every item, changing only the ID of the
80
+ post. An example of the link format for Brian's Hipster blog would be:
81
+
82
+ BlogPost.rss_options[:link_format] = "http://blog.hipsterbrian.com/:id"
83
+
84
+ ZOMGRSS would replace `:id` with the object's ID field.
85
+
86
+
87
+ Custom Options
88
+ ---------------
89
+ ### Custom Method Names
90
+
91
+ If your class uses different names for the necessary methods (`title`, `body` and `created_at`) you
92
+ can set them in the rss_options. If you had the following class:
93
+
94
+ class BlogPost
95
+ include DataMapper::Resource
96
+ rss_me
97
+
98
+ property :id, Serial
99
+ property :title_text, String, :required => true
100
+ property :description, Text, :required => true
101
+ property :created, DateTime
102
+ end
103
+
104
+ You'd have to set the following options:
105
+
106
+ BlogPost.rss_options[:title_method] = :title_text
107
+ BlogPost.rss_options[:body_method] = :description
108
+ BlogPost.rss_options[:date_method] = :created
109
+
110
+ And then call the `to_rss` class method as you normally would:
111
+
112
+ BlogPost.to_rss
113
+
114
+
115
+ ### Custom Finders
116
+
117
+ Sometimes you'll want to create an RSS feed of only certain objects. By default ZOMGRSS uses `:all`
118
+ as the finder, meaning it will call YourClass.all to find the records to be included in the feed. If
119
+ you want to use a different finder you can modify it through the `:finder` option:
120
+
121
+ class BlogPost < ActiveRecord::Base
122
+ rss_me
123
+
124
+ # return only 5 records
125
+ named_scope :only_five, { :limit => 5 }
126
+ end
127
+
128
+ BlogPost.rss_options[:finder] = :only_five
129
+ BlogPost.to_rss # => Will create a feed with only 5 items.
130
+
131
+ You can also pass options to your custom finders to use more complex queries:
132
+
133
+ class BlogPost < ActiveRecord::Base
134
+ rss_me
135
+
136
+ # returns 'max-min' records
137
+ named_scope :limit, lambda { |max, min| { :limit => (max - min) } }
138
+ end
139
+
140
+ BlogPost.rss_options[:finder] = :limit
141
+ BlogPost.rss_options[:finder_options] = [10,5]
142
+ BlogPost.to_rss # => Creates a feed with only 5 items.
143
+
144
+ ### GUIDs
145
+
146
+ Every RSS item needs to have an unique identifier. The current format used by ZOMGRSS follows the
147
+ Movable Type convention: "id@http://example.com" (as in _342@http://blog.hipsterbrian.com_). If you
148
+ need to change this you can set a custom GUID format:
149
+
150
+ BlogPost.rss_options[:guid_format] = "http://blog.hipsterbrian.com/unique/:id"
151
+
152
+ ZOMGRSS will replace the `:id` in the format for the object's ID.
153
+
154
+
155
+ TODO
156
+ ----
157
+ * Allow the user to set global default options. Right now you'll have to set the default options for
158
+ each new RSS feed you want to create.
159
+ * Support for Atom?
160
+ * Allow lambdas instead of methods in rss_options (useful to return a text snippet of a field).
161
+ * Create Rubygem (iknorite?)
162
+ * Generate static .xml files.
163
+
164
+ Most of these can be easily implemented but I haven't needed them so far. If you'd like to see them
165
+ included please let me know through an Issue in the [Github Tracker](http://github.com/febuiles/zomgrss/issues).
166
+
167
+ Contact
168
+ --------
169
+ * **Email**: federico@mheroin.com
170
+ * **Issues**: [Github Tracker](http://github.com/febuiles/zomgrss/issues)
@@ -0,0 +1,35 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "zomgrss"
8
+ gem.summary = "Create RSS feeds from Ruby collections."
9
+ gem.description = "Create RSS feeds from Ruby collections."
10
+ gem.email = "federico@mheroin.com"
11
+ gem.homepage = "http://github.com/febuiles/zomgrss"
12
+ gem.authors = ["Federico Builes"]
13
+ gem.add_development_dependency "builder"
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
18
+ end
19
+
20
+ Spec::Rake::SpecTask.new('spec') do |t|
21
+ t.spec_files = FileList['spec/*_spec.rb']
22
+ end
23
+
24
+ desc 'Default: run specs.'
25
+ task :default => :spec
26
+
27
+ require 'rake/rdoctask'
28
+ Rake::RDocTask.new do |rdoc|
29
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
30
+
31
+ rdoc.rdoc_dir = 'rdoc'
32
+ rdoc.title = "zomgrss #{version}"
33
+ rdoc.rdoc_files.include('README*')
34
+ rdoc.rdoc_files.include('lib/**/*.rb')
35
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,23 @@
1
+ require 'active_record'
2
+ require File.join(File.dirname(__FILE__), '..', '/lib/zomgrss.rb')
3
+
4
+ # Run the do.rb example first to create the samples database.
5
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => "sample.db")
6
+
7
+ class BlogPost < ActiveRecord::Base
8
+ rss_me
9
+ named_scope :limit, lambda { |max, min| { :limit => (max - min) } }
10
+ end
11
+
12
+ # Set options for the RSS generator.
13
+ BlogPost.rss_options[:title] = "My new not emo blog"
14
+ BlogPost.rss_options[:description] = "Emo no more, I'm HipsterBrian now"
15
+ BlogPost.rss_options[:base_url] = "http://blog.hipsterbrian.com/"
16
+ BlogPost.rss_options[:link_format] = "http://blog.hipsterbrian.com/:id"
17
+
18
+ # Use a custom finder for items
19
+ BlogPost.rss_options[:finder] = :limit
20
+ BlogPost.rss_options[:finder_options] = [10, 9]
21
+
22
+
23
+ print BlogPost.to_rss
@@ -0,0 +1,33 @@
1
+ require 'dm-core'
2
+ require 'dm-timestamps'
3
+ require File.join(File.dirname(__FILE__), '..', '/lib/zomgrss.rb')
4
+
5
+ DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/sample.db")
6
+
7
+ class BlogPost
8
+ include DataMapper::Resource
9
+ rss_me
10
+
11
+ property :id, Serial
12
+ property :title, String, :required => true
13
+ property :body, Text, :required => true
14
+ property :created_at, DateTime
15
+ end
16
+
17
+ DataMapper.auto_upgrade!
18
+
19
+ # Create some sample posts...
20
+ BlogPost.create(:title => "My first post", :body => "Isnt this super interesting?")
21
+ BlogPost.create(:title => "My second post", :body => "I wish my lawn was emo so I could stop doing silly jokes")
22
+
23
+ # Set default options for the RSS generator.
24
+ BlogPost.rss_options[:title] = "My new not emo blog"
25
+ BlogPost.rss_options[:description] = "Emo no more, I'm HipsterBrian now"
26
+ BlogPost.rss_options[:base_url] = "http://blog.hipsterbrian.com/"
27
+ BlogPost.rss_options[:link_format] => "http://blog.hipsterbrian.com/:id"
28
+
29
+ # This is the resulting RSS.
30
+ print BlogPost.to_rss
31
+
32
+
33
+
@@ -0,0 +1,60 @@
1
+ require 'builder'
2
+ require 'time'
3
+
4
+ def rss_me
5
+ self.extend ZOMGRSS
6
+ end
7
+
8
+ module ZOMGRSS
9
+ def to_rss
10
+ finder = rss_options[:finder]
11
+ finder_options = rss_options[:finder_options]
12
+
13
+ if finder_options
14
+ items = self.send(finder, *finder_options)
15
+ else
16
+ items = self.send(finder)
17
+ end
18
+
19
+ xml = Builder::XmlMarkup.new
20
+
21
+ xml.instruct! :xml, :version => '1.0'
22
+ xml.rss :version => "2.0" do
23
+ xml.channel do
24
+ xml.title rss_options[:title]
25
+ xml.description rss_options[:description]
26
+ xml.link rss_options[:base_url]
27
+
28
+ items.each do |item|
29
+ xml.item do
30
+ xml.title item.send(rss_options[:title_method])
31
+ xml.link(rss_options[:link_format].gsub(":id", item.id.to_s), :isPermaLink => false)
32
+ xml.description item.send(rss_options[:body_method])
33
+ xml.pubDate Time.parse(item.send(rss_options[:date_method]).to_s).rfc822()
34
+ xml.guid rss_options[:guid_format].gsub(":id", item.id.to_s)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ def rss_options(rss_options={ })
42
+ @rss_opts = (@rss_opts || self.default_rss_options).merge(rss_options)
43
+ end
44
+
45
+ protected
46
+ def default_rss_options
47
+ {
48
+ :title => "Your blog!",
49
+ :description => "A nice description of your emo posts",
50
+ :base_url => "http://example.com/blog",
51
+ :body_method => :body,
52
+ :title_method => :title,
53
+ :link_format => "http://example.com/blog/:id",
54
+ :date_method => :created_at,
55
+ :guid_format => ":id@http://example.com/blog/", # works nicely when switching domains.
56
+ :finder => :all,
57
+ :finder_options => nil
58
+ }
59
+ end
60
+ end
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,40 @@
1
+ require File.join(File.dirname(__FILE__), '..', '/lib/zomgrss.rb')
2
+ require 'spec'
3
+ require 'nokogiri'
4
+
5
+ class SuperSomething
6
+ attr_reader :id, :title, :body, :created_at
7
+
8
+ rss_me
9
+
10
+ def self.all
11
+ self.some(3)
12
+ end
13
+
14
+ def initialize(date)
15
+ @id = 4 # chosen by a fair dice roll, guaranteed to be random.
16
+ @title = "SuperTitle!"
17
+ @body = '<p><img src="http://mheroin.com/img.jpg" />SuperBody!!</p>'
18
+ @created_at = date
19
+ end
20
+
21
+ def self.some(lim=1, date=Time.utc(1987, "apr", 4, 2, 0, 0))
22
+ Array.new(lim, SuperSomething.new(date))
23
+ end
24
+
25
+ def fecha; @created_at; end
26
+ def titulo; @title; end
27
+ def cuerpo; @body; end
28
+ end
29
+
30
+ def base_url
31
+ "http://mheroin.com"
32
+ end
33
+
34
+ def default_options
35
+ SuperSomething.send(:default_rss_options)
36
+ end
37
+
38
+ def parse_feed
39
+ @feed = Nokogiri::XML(SuperSomething.to_rss)
40
+ end
@@ -0,0 +1,156 @@
1
+ require "spec_helper"
2
+
3
+ describe "Installation" do
4
+ it "is done by calling 'rss_me'" do
5
+ lambda { class Throwaway; rss_me; end }.should_not raise_error
6
+ end
7
+
8
+ it "provides .to_rss to the class" do
9
+ c = class Throwaway; rss_me; end
10
+ c.should respond_to(:to_rss)
11
+ end
12
+ end
13
+
14
+ describe "Options" do
15
+ it "provides default options if there are none set" do
16
+ SuperSomething.rss_options.should == default_options
17
+ end
18
+
19
+ it "adds options to the current options if they exist" do
20
+ SuperSomething.rss_options(:title => "My new title")
21
+ SuperSomething.rss_options.should == default_options.merge(:title => "My new title")
22
+ end
23
+
24
+ it "includes a feed title" do
25
+ SuperSomething.rss_options[:title].should_not be_nil
26
+ end
27
+
28
+ it "includes a feed description" do
29
+ SuperSomething.rss_options[:description].should_not be_nil
30
+ end
31
+
32
+ it "includes a feed base URL" do
33
+ SuperSomething.rss_options[:base_url].should_not be_nil
34
+ end
35
+
36
+ it "includes a custom title method, defaulted to :title" do
37
+ SuperSomething.rss_options[:title_method].should == :title
38
+ end
39
+
40
+ it "includes a custom body method, defaulted to :body" do
41
+ SuperSomething.rss_options[:body_method].should == :body
42
+ end
43
+
44
+ it "includes a link format for the feed items" do
45
+ SuperSomething.rss_options[:link_format].should_not be_nil
46
+ end
47
+
48
+ it "includes a date field for the feed items, defaulted to :created_at" do
49
+ SuperSomething.rss_options[:date_method].should == :created_at
50
+ end
51
+
52
+ it "includes a GUID format for the feed items" do
53
+ SuperSomething.rss_options[:guid_format].should_not be_nil
54
+ end
55
+
56
+ it "includes a custom finder method, defaulted to :all" do
57
+ SuperSomething.rss_options[:finder].should == :all
58
+ end
59
+
60
+ it "includes the options for the custom finder method, defaulted to nil" do
61
+ SuperSomething.rss_options[:finder_options].should be_nil
62
+ end
63
+ end
64
+
65
+ describe "ZOMGRSS.to_rss" do
66
+ before :each do
67
+ parse_feed
68
+ end
69
+
70
+ after :each do
71
+ SuperSomething.rss_options(default_options)
72
+ end
73
+
74
+ it "returns a a well formed RSS feed" do
75
+ @feed.errors.should be_empty
76
+ end
77
+
78
+ it "uses the correct feed base data" do
79
+ @feed.at_css("channel title").text.should == default_options[:title]
80
+ @feed.at_css("channel description").text.should == default_options[:description]
81
+ @feed.at_css("channel link").text.should == default_options[:base_url]
82
+ end
83
+
84
+ it "replaces :link_format with the actual item link" do
85
+ expected = default_options[:link_format].gsub(":id", "4")
86
+ @feed.at_css("channel item link").text.should == expected
87
+ end
88
+
89
+ it "uses :created_at or a custom field for the item's date" do
90
+ expected = "Sat, 04 Apr 1987 02:00:00 -0000"
91
+ @feed.at_css("channel item pubDate").text.should == expected
92
+
93
+ SuperSomething.rss_options(:date_method => :fecha)
94
+ @feed.at_css("channel item pubDate").text.should == expected
95
+ end
96
+
97
+ it "generates a MovableType-like GUID from the items " do
98
+ expected = default_options[:guid_format].gsub(":id", "4")
99
+ @feed.at_css("channel item guid").text.should == expected
100
+ end
101
+
102
+ it "can use a custom GUID format" do
103
+ expected = "http://something.com/4"
104
+
105
+ SuperSomething.rss_options[:guid_format] = "http://something.com/:id"
106
+ parse_feed
107
+ @feed.at_css("channel item guid").text.should == expected
108
+ end
109
+
110
+ it "can use a custom finder to fetch the objects" do
111
+ @feed.css("channel item").length.should == 3
112
+
113
+ SuperSomething.rss_options[:finder] = :some
114
+ parse_feed
115
+ @feed.css("channel item").length.should == 1
116
+ end
117
+
118
+ it "can pass custom options to the finder" do
119
+ @feed.css("channel item").length.should == 3
120
+
121
+ SuperSomething.rss_options[:finder] = :some
122
+ SuperSomething.rss_options[:finder_options] = 2
123
+ parse_feed
124
+ @feed.css("channel item").length.should == 2
125
+ end
126
+
127
+ it "explodes custom finder options" do
128
+ @feed.css("channel item").length.should == 3
129
+
130
+ SuperSomething.rss_options[:finder] = :some
131
+ SuperSomething.rss_options[:finder_options] = [2, Time.utc(1987, "may", 4, 2, 0, 0)]
132
+ parse_feed
133
+ @feed.css("channel item").length.should == 2
134
+ @feed.at_css("channel item pubDate").text.should == "Mon, 04 May 1987 02:00:00 -0000"
135
+ end
136
+
137
+ it "supports custom title methods" do
138
+ @feed.at_css("channel item title").text.should == "SuperTitle!"
139
+
140
+ SuperSomething.rss_options[:title_method] = :titulo
141
+ parse_feed
142
+ @feed.at_css("channel item title").text.should == "SuperTitle!"
143
+ end
144
+
145
+ it "supports custom body methods" do
146
+ @feed.at_css("channel item description").text.should == '<p><img src="http://mheroin.com/img.jpg" />SuperBody!!</p>'
147
+
148
+ SuperSomething.rss_options[:body_method] = :cuerpo
149
+ parse_feed
150
+ @feed.at_css("channel item description").text.should == '<p><img src="http://mheroin.com/img.jpg" />SuperBody!!</p>'
151
+ end
152
+
153
+ it "uses a GUID with isPermaLink=false" do
154
+ @feed.at_css("channel item link").attributes["isPermaLink"].text.should == "false"
155
+ end
156
+ end
@@ -0,0 +1,59 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{zomgrss}
8
+ s.version = "1.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Federico Builes"]
12
+ s.date = %q{2010-05-22}
13
+ s.description = %q{Create RSS feeds from Ruby collections.}
14
+ s.email = %q{federico@mheroin.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "examples/active_record_sample.rb",
27
+ "examples/datamapper_sample.rb",
28
+ "lib/zomgrss.rb",
29
+ "spec/spec.opts",
30
+ "spec/spec_helper.rb",
31
+ "spec/zomgrss_spec.rb",
32
+ "zomgrss.gemspec"
33
+ ]
34
+ s.homepage = %q{http://github.com/febuiles/zomgrss}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.3.7}
38
+ s.summary = %q{Create RSS feeds from Ruby collections.}
39
+ s.test_files = [
40
+ "spec/spec_helper.rb",
41
+ "spec/zomgrss_spec.rb",
42
+ "examples/active_record_sample.rb",
43
+ "examples/datamapper_sample.rb"
44
+ ]
45
+
46
+ if s.respond_to? :specification_version then
47
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
+ s.specification_version = 3
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_development_dependency(%q<builder>, [">= 0"])
52
+ else
53
+ s.add_dependency(%q<builder>, [">= 0"])
54
+ end
55
+ else
56
+ s.add_dependency(%q<builder>, [">= 0"])
57
+ end
58
+ end
59
+
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zomgrss
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Federico Builes
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-05-22 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: builder
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ description: Create RSS feeds from Ruby collections.
36
+ email: federico@mheroin.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - LICENSE
43
+ - README.markdown
44
+ files:
45
+ - .document
46
+ - .gitignore
47
+ - LICENSE
48
+ - README.markdown
49
+ - Rakefile
50
+ - VERSION
51
+ - examples/active_record_sample.rb
52
+ - examples/datamapper_sample.rb
53
+ - lib/zomgrss.rb
54
+ - spec/spec.opts
55
+ - spec/spec_helper.rb
56
+ - spec/zomgrss_spec.rb
57
+ - zomgrss.gemspec
58
+ has_rdoc: true
59
+ homepage: http://github.com/febuiles/zomgrss
60
+ licenses: []
61
+
62
+ post_install_message:
63
+ rdoc_options:
64
+ - --charset=UTF-8
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ hash: 3
82
+ segments:
83
+ - 0
84
+ version: "0"
85
+ requirements: []
86
+
87
+ rubyforge_project:
88
+ rubygems_version: 1.3.7
89
+ signing_key:
90
+ specification_version: 3
91
+ summary: Create RSS feeds from Ruby collections.
92
+ test_files:
93
+ - spec/spec_helper.rb
94
+ - spec/zomgrss_spec.rb
95
+ - examples/active_record_sample.rb
96
+ - examples/datamapper_sample.rb