Class: BlogMarks::Feed
- Inherits:
-
Object
- Object
- BlogMarks::Feed
- Defined in:
- lib/blogmarks/feed.rb
Instance Attribute Summary collapse
-
#link_alternate ⇒ Object
readonly
Blogmarks.net corresponding feed page.
-
#link_next ⇒ Object
readonly
Next Feed URI.
-
#link_prev ⇒ Object
readonly
Previous Feed URI.
-
#marks ⇒ Object
readonly
Feed Marks.
-
#title ⇒ Object
readonly
Feed title.
-
#updated ⇒ Object
readonly
Feed update date.
Class Method Summary collapse
-
.build_from_xml_element(feed) ⇒ Object
Parse an REXML::Element corresponding to the feed.
Instance Method Summary collapse
-
#initialize(params = {}) ⇒ Feed
constructor
Create a feed from params.
Constructor Details
#initialize(params = {}) ⇒ Feed
Create a feed from params
params hash can contains any of the object vars
49 50 51 52 53 54 55 56 |
# File 'lib/blogmarks/feed.rb', line 49 def initialize( params={} ) @title = params[:title] || nil @alternate = params[:link_alternate] || nil @link_prev = params[:link_prev] || nil @link_next = params[:link_next] || nil @updated = params[:updated] || nil @marks = params[:marks] || [] end |
Instance Attribute Details
#link_alternate ⇒ Object (readonly)
Blogmarks.net corresponding feed page
35 36 37 |
# File 'lib/blogmarks/feed.rb', line 35 def link_alternate @link_alternate end |
#link_next ⇒ Object (readonly)
Next Feed URI
39 40 41 |
# File 'lib/blogmarks/feed.rb', line 39 def link_next @link_next end |
#link_prev ⇒ Object (readonly)
Previous Feed URI
37 38 39 |
# File 'lib/blogmarks/feed.rb', line 37 def link_prev @link_prev end |
#marks ⇒ Object (readonly)
Feed Marks
44 45 46 |
# File 'lib/blogmarks/feed.rb', line 44 def marks @marks end |
#title ⇒ Object (readonly)
Feed title
33 34 35 |
# File 'lib/blogmarks/feed.rb', line 33 def title @title end |
#updated ⇒ Object (readonly)
Feed update date
41 42 43 |
# File 'lib/blogmarks/feed.rb', line 41 def updated @updated end |
Class Method Details
.build_from_xml_element(feed) ⇒ Object
Parse an REXML::Element corresponding to the feed
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/blogmarks/feed.rb', line 62 def build_from_xml_element( feed ) # We need a valide REXML::Element parameters :D return nil unless feed.kind_of?(REXML::Element) # Let's build the params to build a BlogMarks::Feed params = {} # Iterate over child nodes feed.each_element do |element| case element.name when 'head' element.each_element do |headElement| case headElement.name when 'title' params[:title] = headElement.text when 'updated' params[:updated] = Time.parse(headElement.text) when 'link' params[:link_alternate] = URI.parse( headElement.attributes['href'] ) if headElement.attributes['rel'] == 'alternate' params[:link_prev] = URI.parse( headElement.attributes['href'] ) if headElement.attributes['rel'] == 'prev' params[:link_next] = URI.parse( headElement.attributes['href'] ) if headElement.attributes['rel'] == 'next' end end when 'entry' params[:marks] = [] unless params.has_key?(:marks) params[:marks] << BlogMarks::Mark.build_from_xml_element(element) end end # Create and return a new Feed constructs using params hash return Feed.new(params) end |