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 tag_blog_items
    Set.new(items
      .find_all('/blog/*/*')
      .flat_map { |i| i[:tags] || [] })
    .to_a
    .sort
    .uniq.map { |y| [y, items["/blog/#{y.gsub(' ', '_')}.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
