planet 0.1.3 → 0.2.1

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.
Files changed (4) hide show
  1. data/bin/planet +11 -8
  2. data/lib/planet.rb +32 -13
  3. data/lib/planet/version.rb +2 -2
  4. metadata +31 -11
data/bin/planet CHANGED
@@ -19,11 +19,12 @@ command :generate do |c|
19
19
 
20
20
  conf['blogs'].each do |blog|
21
21
  @planet.blogs << Planet::Blog.new(
22
- blog['feed'],
23
- blog['author'],
24
- blog['image'],
25
- [],
26
- @planet
22
+ feed: blog['feed'],
23
+ author: blog['author'],
24
+ image: blog['image'],
25
+ posts: [],
26
+ planet: @planet,
27
+ twitter: blog['twitter']
27
28
  )
28
29
  end
29
30
 
@@ -48,10 +49,12 @@ blogs:
48
49
  - author: "Pablo Astigarraga"
49
50
  feed: "http://blog.poteland.com/atom.xml"
50
51
  image: "http://poteland.com/images/avatars/red_mage.png"
52
+ twitter: "poteland"
51
53
 
52
54
  - author: "Cubox"
53
55
  feed: "http://blog.cuboxlabs.com/atom.xml"
54
- image: "http://cuboxlabs.com/img/cubox-humans/could-be-you.png"'
56
+ image: "http://cuboxlabs.com/img/cubox-humans/could-be-you.png"
57
+ twitter: "cubox"'
55
58
 
56
59
  File.open('planet.yml', 'w') { |f| f.write(default) }
57
60
 
@@ -69,9 +72,9 @@ command :create_templates do |c|
69
72
  Dir.mkdir(templates_dir) unless File.exists?(templates_dir)
70
73
 
71
74
  author = '<div class="author">
72
- <img src="{{ image }}" style="width: 48px; height: 48px;">
75
+ <a href="{{ twitter }}"><img src="{{ image }}" style="width: 48px; height: 48px;"></a>
73
76
  <span style="position: absolute; padding: 12px;">
74
- <i>Original post by {{ author }} - <a href="{{ link }}">read it from the source</a></i>
77
+ <i>Original post by {{ author }} - <a href="{{ blog }}">check out the original blog</a></i>
75
78
  </span>
76
79
  </div>
77
80
  '
data/lib/planet.rb CHANGED
@@ -1,5 +1,4 @@
1
- require 'simple-rss'
2
- require 'open-uri'
1
+ require 'feedzirra'
3
2
  require 'mustache'
4
3
 
5
4
  class Planet
@@ -49,14 +48,15 @@ class Planet
49
48
  def aggregate
50
49
  @@_blogs.each do |blog|
51
50
  puts "=> Parsing #{ blog.feed }"
52
- rss = SimpleRSS.parse open(blog.feed)
53
- rss.entries.each do |entry|
51
+ feed = Feedzirra::Feed.fetch_and_parse(blog.feed)
52
+ blog.url = feed.url
53
+ feed.entries.each do |entry|
54
54
  @@_posts << @post = Post.new(
55
- entry.fetch(:title),
56
- entry.fetch(:content).strip,
57
- entry.fetch(:updated, nil), # Yeah, I know, Im following the default octopress value for the date parameter.
58
- entry.fetch(:id, nil), # Er, this is the full link to the article
59
- blog
55
+ title: entry.title,
56
+ content: entry.content.strip.gsub('<img src="', "<img src=\"#{ blog.url }"),
57
+ date: entry.published,
58
+ url: blog.url + entry.url,
59
+ blog: blog
60
60
  )
61
61
 
62
62
  blog.posts << @post
@@ -77,13 +77,21 @@ class Planet
77
77
  end
78
78
  end
79
79
 
80
- class Post < Struct.new(:title, :content, :date, :link, :blog)
80
+ class Post < Struct.new(:title, :content, :date, :url, :blog)
81
+
82
+ def initialize(attributes = {})
83
+ self.title = attributes.fetch(:title, nil)
84
+ self.content = attributes.fetch(:content, nil)
85
+ self.date = attributes.fetch(:date, nil)
86
+ self.url = attributes.fetch(:url, nil)
87
+ self.blog = attributes.fetch(:blog, nil)
88
+ end
81
89
 
82
90
  def to_hash
83
91
  {
84
92
  title: title,
85
93
  date: date.strftime('%Y-%m-%d %H:%M'),
86
- link: link,
94
+ url: url,
87
95
  content: content,
88
96
  author: blog.author
89
97
  }
@@ -117,7 +125,8 @@ class Planet
117
125
  data = {
118
126
  image: self.blog.image,
119
127
  author: self.blog.author,
120
- link: self.link
128
+ blog: self.blog.url,
129
+ twitter: self.blog.twitter ? "http://twitter.com/#{ self.blog.twitter }" : self.blog.url
121
130
  }
122
131
 
123
132
  Mustache.render(file_contents, data)
@@ -128,6 +137,16 @@ class Planet
128
137
  end
129
138
  end
130
139
 
131
- class Blog < Struct.new(:feed, :author, :image, :posts, :planet)
140
+ class Blog < Struct.new(:url, :feed, :author, :image, :twitter, :posts, :planet)
141
+
142
+ def initialize(attributes = {})
143
+ self.url = attributes[:url]
144
+ self.feed = attributes[:feed]
145
+ self.author = attributes[:author]
146
+ self.image = attributes[:image]
147
+ self.twitter = attributes[:twitter]
148
+ self.posts = attributes.fetch('posts', [])
149
+ self.planet = attributes[:planet]
150
+ end
132
151
  end
133
152
  end
@@ -1,8 +1,8 @@
1
1
  module Planet
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 1
5
- PATCH = 3
4
+ MINOR = 2
5
+ PATCH = 1
6
6
 
7
7
  def self.to_s
8
8
  [MAJOR, MINOR, PATCH].join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: planet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2152604220 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152604220
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: gli
27
- requirement: &2152603380 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2152603380
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
- name: simple-rss
38
- requirement: &2152596320 !ruby/object:Gem::Requirement
47
+ name: feedzirra
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *2152596320
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: mustache
49
- requirement: &2152595740 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,7 +69,12 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *2152595740
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  description:
59
79
  email: pote@tardis.com.uy
60
80
  executables:
@@ -86,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
106
  version: '0'
87
107
  requirements: []
88
108
  rubyforge_project:
89
- rubygems_version: 1.8.10
109
+ rubygems_version: 1.8.22
90
110
  signing_key:
91
111
  specification_version: 3
92
112
  summary: An awesome rss/atom feed aggregator designed to work with Octopress/Jekyll