Module: Feedjira::FeedEntryUtilities
- Includes:
- Enumerable
- Included in:
- Parser::AtomEntry, Parser::AtomFeedBurnerEntry, Parser::AtomGoogleAlertsEntry, Parser::AtomYoutubeEntry, Parser::GoogleDocsAtomEntry, Parser::ITunesRSSItem, Parser::JSONFeedItem, Parser::PodloveChapter, Parser::RSSEntry, Parser::RSSFeedBurnerEntry
- Defined in:
- lib/feedjira/feed_entry_utilities.rb
Instance Method Summary collapse
- #[](field) ⇒ Object
- #[]=(field, value) ⇒ Object
- #each ⇒ Object
-
#id ⇒ Object
Returns the id of the entry or its url if not id is present, as some formats don’t support it rubocop:disable Naming/MemoizedInstanceVariableName.
- #parse_datetime(string) ⇒ Object
- #published ⇒ Object (also: #last_modified)
-
#published=(val) ⇒ Object
Writer for published.
- #sanitize! ⇒ Object
-
#updated=(val) ⇒ Object
Writer for updated.
Instance Method Details
#[](field) ⇒ Object
65 66 67 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 65 def [](field) instance_variable_get(:"@#{field}") end |
#[]=(field, value) ⇒ Object
69 70 71 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 69 def []=(field, value) instance_variable_set(:"@#{field}", value) end |
#each ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 52 def each @rss_fields ||= instance_variables.map do |ivar| ivar.to_s.sub("@", "") end.select do |field| # rubocop:disable Style/MultilineBlockChain # select callable (public) methods only respond_to?(field) end @rss_fields.each do |field| yield(field, instance_variable_get(:"@#{field}")) end end |
#id ⇒ Object
Returns the id of the entry or its url if not id is present, as some formats don’t support it rubocop:disable Naming/MemoizedInstanceVariableName
23 24 25 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 23 def id @entry_id ||= @url end |
#parse_datetime(string) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 11 def parse_datetime(string) DateTime.parse(string).feed_utils_to_gm_time rescue StandardError => e Feedjira.logger.debug("Failed to parse date #{string.inspect}") Feedjira.logger.debug(e) nil end |
#published ⇒ Object Also known as: last_modified
7 8 9 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 7 def published @published ||= @updated end |
#published=(val) ⇒ Object
Writer for published. By default, we keep the “oldest” publish time found.
30 31 32 33 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 30 def published=(val) parsed = parse_datetime(val) @published = parsed if parsed && (!@published || parsed < @published) end |
#sanitize! ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 42 def sanitize! %w[title author summary content image].each do |name| if respond_to?(name) && send(name).respond_to?(:sanitize!) send(name).send(:sanitize!) end end end |
#updated=(val) ⇒ Object
Writer for updated. By default, we keep the most recent update time found.
37 38 39 40 |
# File 'lib/feedjira/feed_entry_utilities.rb', line 37 def updated=(val) parsed = parse_datetime(val) @updated = parsed if parsed && (!@updated || parsed > @updated) end |