Sha256: 5cc4760489a830a7f4b7c35710ebf4479e74400aedaae05dcbc200b5f181f983

Contents?: true

Size: 931 Bytes

Versions: 5

Compression:

Stored size: 931 Bytes

Contents

require 'rubygems'
require 'nokogiri'
require 'time'

module Atomic

  class Feed

    class << self

      def parse(data)
        feed = new
        doc = data.kind_of?(Nokogiri::XML::Element) ? data : Nokogiri.XML(data)
        feed_node = doc.xpath('//atom:feed', NAMESPACES).first
        feed.title = feed_node.xpath('atom:title', NAMESPACES).first.text
        feed.id = feed_node.xpath('atom:id', NAMESPACES).first.text
        feed_node.xpath('atom:entry', NAMESPACES).each do |entry_node|
          feed.entries << Entry.parse(entry_node)
        end
        feed
      end

    end

    attr_accessor :title, :id, :entries

    def initialize(params = {})
      @title = params[:title]
      @id = params[:id]
      @entries = params[:entries] || []
    end

    def to_hash
      {
        :title => @title,
        :id => @id,
        :entries => @entries.collect { |entry| entry.to_hash }
      }
    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
exempla-atomic-0.0.4 lib/atomic/feed.rb
exempla-atomic-0.0.5 lib/atomic/feed.rb
exempla-atomic-0.0.6 lib/atomic/feed.rb
exempla-atomic-0.0.7 lib/atomic/feed.rb
exempla-atomic-0.0.8 lib/atomic/feed.rb