blob: 69d815a53b9e040d9f63169fe5b7ac4d85029686 [file] [log] [blame]
# Executive Officer Reports
class ASF::Board::Agenda
parse do
reports = @file.split(/^ 4. Executive Officer Reports/,2).last.
split(/^ 5. Additional Officer Reports/,2).first
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
end
end
end