zeus.ugent.be/lib/helpers/archives.rb
2020-10-12 19:40:15 +02:00

53 lines
1.1 KiB
Ruby

module ArchiveHelper
def academic_years
# Set.to_a to prevent duplicates
Set.new(items
.find_all('/blog/*/*')
.map { |i| i.identifier.to_s.split('/')[-2] })
.to_a
.sort
.push(@config[:academic_year])
.uniq
end
def academic_years_blog_items
academic_years.reverse.map { |y| [y, items["/blog/#{y}.html"]] }
end
def tags
# Set.to_a to prevent duplicates
Set.new(items
.find_all('/blog/*/*')
.flat_map { |i| i[:tags] || [] })
.to_a
.sort
.uniq
end
def tag_blog_items
tags.map { |y| [y, items["/blog/#{y}.html"]]}
end
def pretty_year(year)
year = year.scan(/\d\d/)
"'#{year[0]} - '#{year[1]}"
end
def posts_in_year(y)
items.find_all("/blog/#{y}/*").sort_by { |x| x[:created_at] }.reverse
end
def posts_with_tag(tag)
items
.find_all('/blog/*/*')
.filter{|i| (i[:tags] || []).include? tag }
end
def posts_in_year_or_with_tag(item)
if item[:is_yearly]
posts_in_year(item[:academic_year])
else
posts_with_tag(item[:tag])
end
end
end