Class: Nanoc::Feeds::Builders::JsonFeedBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/nanoc/feeds/builders/json_feed_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(config:, articles:, limit: 5, title: config[:title]) ⇒ JsonFeedBuilder

Returns a new instance of JsonFeedBuilder.



4
5
6
7
8
9
10
11
12
13
14
# File 'lib/nanoc/feeds/builders/json_feed_builder.rb', line 4

def initialize(
  config:,
  articles:,
  limit: 5,
  title: config[:title]
)
  @config = config
  @articles = articles
  @limit = limit
  @title = title
end

Instance Method Details

#buildObject



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/nanoc/feeds/builders/json_feed_builder.rb', line 16

def build
  items = @articles.first(@limit).map { |article| build_article(article) }

  {
    version: "https://jsonfeed.org/version/1.1",
    title: @title,
    home_page_url: "#{@config[:base_url]}",
    feed_url: feed_url,
    items: items
  }.to_json
end

#build_article(article) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/nanoc/feeds/builders/json_feed_builder.rb', line 28

def build_article(article)
  {
    id: "#{@config[:base_url]}#{article.identifier.without_exts}",
    url: url_for(article),
    title: article[:title] || @title,
    content_text: "#{article.compiled_content}",
    date_published: "#{article[:created_at].rfc3339}"
  }
end