diff --git a/lib/articlearchive.rb b/lib/articlearchive.rb index 51f15bde..2888c71d 100644 --- a/lib/articlearchive.rb +++ b/lib/articlearchive.rb @@ -2,22 +2,5 @@ require 'ostruct' def generate_archive_pages() articles = items.select { |i| i[:kind] == 'article' } - yearmap = articles.group_by { |item| item[:created_at].year } - yearmap.keys.each { |year| - # Simplified assumption: At least one blog post each year - linkprev = if (year>yearmap.keys.min) - ", :linkprev => OpenStruct.new(:title => #{year-1}, :link => '/archives/articles/#{year-1}/')" - else - "" - end - linknext = if (year OpenStruct.new(:title => #{year+1}, :link => '/archives/articles/#{year+1}/')" - else - "" - end - @items << Nanoc::Item.new( - "<%= render 'article_archive', :year => #{year} #{linkprev} #{linknext} %>", - { :title => "Blogarchiv #{year}", :kind => "fullpage" }, - "/archives/articles/#{year}/") - } + generate_yearly_archive(articles, '/archives/articles', 'Blogarchiv') end diff --git a/lib/yearlyarchive.rb b/lib/yearlyarchive.rb new file mode 100644 index 00000000..7e675bfd --- /dev/null +++ b/lib/yearlyarchive.rb @@ -0,0 +1,22 @@ +require 'ostruct' + +def generate_yearly_archive(articles, basepath, title, templatename = 'article_archive') + yearmap = articles.group_by { |item| item[:created_at].year } + yearmap.keys.each { |year| + # Simplified assumption: At least one blog post each year + linkprev = if (year>yearmap.keys.min) + ", :linkprev => OpenStruct.new(:title => #{year-1}, :link => '#{basepath}/#{year-1}/')" + else + "" + end + linknext = if (year OpenStruct.new(:title => #{year+1}, :link => '#{basepath}/#{year+1}/')" + else + "" + end + @items << Nanoc::Item.new( + "<%= render '#{templatename}', :year => #{year} #{linkprev} #{linknext} %>", + { :title => "#{title} #{year}", :kind => "fullpage" }, + "#{basepath}/#{year}/") + } +end