Sha256: 24fd8550e0c241c2155c552b97392d93e014cbcfa9cef5f1be5c570353371ab6

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

require 'builder' # As suggested by tilt

module Alula
  class Generator::FeedBuilder < Generator
    def generate
      # Loop all languages and count posts per language
      @languages = {}
      self.site.content.posts.each do |post|
        post.languages.each do |lang|
          @languages[lang] ||= []
          @languages[lang] << post
        end
      end
      titles = Hash[@languages.collect {|lang, x| [lang, I18n.t("feedbuilder.recent_posts", locale: lang)]}]
      posts = Hash[
        @languages.collect do |lang, posts|
          [ lang, posts.slice(0, self.options.items) ]
        end
      ]
      
      @feed_page = Alula::Content::Page.new({
        generator: self,
        posts: posts,
        title: titles,
        name: "feed.xml",
        slug: "feed",
        template: self.options.template || "/:locale/:name",
        site: self.site,
        layout: "feed",
      },
      :previous => ->(locale) { nil },
      :next => ->(locale) { nil },
      :navigation => ->(locale) { nil },
      )
      self.site.content.pages << @feed_page
      
      # Add link to head
      Alula::Plugin.addon(:head, ->(context) {
        "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"#{context.url_for(@feed_page.url(context.locale))}\">"
      })
      # -# %link{rel: "alternate", type: "application/rss+xml", title: "RSS", href: "/feed.xml"}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
alula-0.4.0b lib/alula/generators/feedbuilder.rb