Class: Rssly::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/rssly/collection.rb,
lib/rssly/collection/age_filter.rb,
lib/rssly/collection/unique_filter.rb

Overview

Represents a collection of articles

Defined Under Namespace

Modules: AgeFilter, UniqueFilter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(items) ⇒ Collection

Returns a new instance of Collection.



25
26
27
# File 'lib/rssly/collection.rb', line 25

def initialize(items)
  self.articles = items
end

Instance Attribute Details

#articlesObject

Returns the value of attribute articles.



23
24
25
# File 'lib/rssly/collection.rb', line 23

def articles
  @articles
end

Class Method Details

.create_from_feeds(*feeds) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/rssly/collection.rb', line 7

def create_from_feeds(*feeds)
  if Rssly::CONFIG[:verbose]
    $stderr.puts(
      "Creating collection from #{feeds.map(&:url).join(', ')}"
    )
  end

  instance = new(
    feeds.map { |f| f.articles }.flatten
  )

  instance.filter(UniqueFilter)
  instance
end

Instance Method Details

#filter(filter, **opts) ⇒ Object



49
50
51
# File 'lib/rssly/collection.rb', line 49

def filter(filter, **opts)
  self.articles = filter.parse(articles, **opts)
end

#lengthObject



29
30
31
# File 'lib/rssly/collection.rb', line 29

def length
  articles.length
end

#to_jsonObject



53
54
55
# File 'lib/rssly/collection.rb', line 53

def to_json
  JSON.generate(articles.map { |a| a.to_h })
end