blob: 5e8b2e041dcf9d02cc3e5956bebbf5cfae4f0191 [file] [log] [blame]
# Executive Officer Reports
class ASF::Board::Agenda
parse do
reports = @file.split(OFFICER_SEPARATOR,2).last
a = reports.split(/^ 5. Additional Officer Reports/,2).first
b = reports.split(/^ 5. Committee Reports/,2).first # Allow parsing of pre-2007 reports
(a.length > b.length) ? reports = b : reports = a
pattern = /
\s{4}(?<section>[A-Z])\.
\s(?<title>[^\[]+?)
\s\[(?<owner>[^\]]+?)\]
(?<report>.*?)
(?=\n\s{4}[A-Z]\.\s|\z)
/mx
scan reports, pattern do |attrs|
attrs['section'] = '4' + attrs['section']
attrs['shepherd'] = attrs['owner'].split('/').last
attrs['owner'] = attrs['owner'].split('/').first
attrs['report'].sub! /\A\s*\n/, ''
attrs['report'].gsub! /\n\s*\n\s+\[ comments:(.*)\]\s*$/m do
attrs['comments'] = $1.sub(/\A\s*\n/, '').sub(/\s+\Z/, '')
"\n"
end
report = attrs['report'].strip
if report.empty? or report[0..12] == 'Additionally,'
attrs['missing'] = true
end
attrs['digest'] = Digest::MD5.hexdigest(report)
end
end
end