Sha256: 482275c2a6f08fa3d880d5f654e843f1b458013ffec80fadf9f0db23e7b2d5a8

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module GreenButtonData
  module Parser
    class Feed
      include SAXMachine
      include Utilities

      element :id, as: :feed_id

      def id
        @feed_id ||= @feed_url
      end

      element :title
      element :subtitle, as: :description

      element :link, as: :url, value: :href, with: { type: 'text/html' }
      element :link, as: :feed_url, value: :href, with: { rel: 'self' }
      element :link, as: :links, value: :href

      def url
        @url || (links - [feed_url]).last || links.last
      end

      def feed_url
        @feed_url ||= links.first
      end

      elements :entry, class: Entry, as: :entries

      element :updated

      def updated=(val)
        @updated = parse_datetime val
      end

      # PG&E's generic namespace
      element :'ns1:id', as: :feed_id
      element :'ns1:title', as: :title
      element :'ns1:subtitle', as: :description
      element :'ns1:link', as: :url, value: :href, with: { type: 'text/html' }
      element :'ns1:link', as: :feed_url, value: :href, with: { rel: 'self' }
      element :'ns1:links', as: :links, value: :href
      element :'ns1:entry', class: Entry, as: :entries
      element :'ns1:updated', as: :updated
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
green-button-data-0.1.0 lib/green-button-data/parser/feed.rb