require 'nokogiri'
require_relative '../asf'

module ASF
  class Podlings
    include Enumerable

    def quarter
      [
        Date.today.strftime('%B'),
        Date.today.next_month.strftime('%B'),
        Date.today.next_month.next_month.strftime('%B')
      ]
    end

    def each
      incubator_content = ASF::SVN['asf/incubator/public/trunk/content']
      podlings = Nokogiri::XML(File.read("#{incubator_content}/podlings.xml"))
      podlings.search('podling').map do |node|

        reporting = node.at('reporting')
        if reporting
          group = reporting['group']
          monthly = reporting.text.split(/,\s*/) if reporting['monthly']
          reporting = %w(January April July October) if group == '1'
          reporting = %w(February May August November) if group == '2'
          reporting = %w(March June September December) if group == '3'
          reporting.rotate! until quarter.include? reporting.first

          if monthly
            monthly.shift until monthly.empty? or quarter.include? monthly.first
            reporting = (monthly + reporting).uniq
          end
        end

        data = {
          name: node['name'],
          status: node['status'],
          reporting: reporting,
          description: node.at('description').text,
          mentors: node.search('mentor').map {|mentor| mentor['username']}
        }
        data[:champion] = node.at('champion')['availid'] if node.at('champion')
        yield node['resource'], data
      end
    end
  end
end
