Sha256: 8c5896f71ca7762362b4d24f20818c8f074c212b31cee926bb91e8a3e969813f

Contents?: true

Size: 1.36 KB

Versions: 7

Compression:

Stored size: 1.36 KB

Contents

module Alula
  class Archive < 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("archive.title", locale: lang)]}]
      
      archives = {}
      @languages.each do |lang, posts|
        options.templates.collect do |template|
          posts.collect do |post|
            archives[post.substitude(template, lang)] ||= {}
            archives[post.substitude(template, lang)][lang] ||= []
            archives[post.substitude(template, lang)][lang] << post
          end
        end
      end

      archives.each do |name, archive|
        self.site.content.pages << Alula::Content::Page.new({
          generator: self,
          posts: archive,
          title: titles.select {|lang, title| archive.keys.include?(lang)},
          name: name,
          slug: name,
          sidebar: false,
          template: "/:locale/:name/",
          site: self.site,
          view: "archive"
        })
      end
    end
    
    def substitutes(locale, item)
      {
        "page" => item.metadata.pagenum.to_s,
      }
    end
  end
end

Alula::Generator.register :archive, Alula::Archive

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
alula-0.4.12 lib/alula/generators/archive.rb
alula-0.4.11 lib/alula/generators/archive.rb
alula-0.4.11a lib/alula/generators/archive.rb
alula-0.4.10 lib/alula/generators/archive.rb
alula-0.4.9 lib/alula/generators/archive.rb
alula-0.4.8 lib/alula/generators/archive.rb
alula-0.4.7 lib/alula/generators/archive.rb