53 lines
1.1 KiB
Ruby
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
|