Sha256: cb373755ad1626147d3160433ce7789c768815f278b1ed97c8c8e169c9a18c5e
Contents?: true
Size: 1.8 KB
Versions: 3
Compression:
Stored size: 1.8 KB
Contents
require 'tilt/jbuilder' # Rabl.register! module Alula class FeedJSON < Generator def allow_compressing? :normal end def generate # Loop all languages and count posts per language @languages = {} (self.site.content.posts + self.site.content.pages).each do |post| post.languages.each do |lang| @languages[lang] ||= [] @languages[lang] << post end end titles = Hash[@languages.collect {|lang, x| [lang, I18n.t("feedjson.recent_posts", locale: lang)]}] posts = Hash[ @languages.collect do |lang, posts| [ lang, posts.slice(0, self.options.items) ] end ] @feedjson = Alula::Content::Page.new({ generator: self, posts: posts, title: titles, name: self.options.name, slug: self.options.slug, sidebar: false, template: self.options.template, site: self.site, layout: "feed.json", }, :previous => ->(hook, locale = nil) { nil }, :next => ->(hook, locale = nil) { nil }, :navigation => ->(hook, locale = nil) { nil }, :write => ->(hook, locale = nil) { begin _old_renderer = self.posts.collect{|p| p.metadata.renderer} self.posts.cycle(1) { |p| p.flush; p.metadata.renderer = self.generator;} hook.call ensure self.posts.cycle(1) {|p| p.metadata.renderer = _old_renderer.shift } end }, ) self.site.content.pages << @feedjson # Add link to head Alula::Plugin.addon(:head, ->(context) { "<link rel=\"alternate\" type=\"application/json\" title=\"FeedJSON\" href=\"#{context.url_for(@feedjson.url(context.locale))}\">" }) end end end Alula::Generator.register :feedjson, Alula::FeedJSON
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
alula-0.4.27 | lib/alula/generators/feedjson.rb |
alula-0.4.26 | lib/alula/generators/feedjson.rb |
alula-0.4.25 | lib/alula/generators/feedjson.rb |