| module ASF |
| |
| class Person < Base |
| |
| # Return a hash of individuals in the member watch list. Keys are |
| # ASF::Person objects, values are the text from |
| # <tt>potential-member-watch-list.txt</tt>.. |
| def self.member_watch_list |
| return @member_watch_list if @member_watch_list |
| |
| text = File.read File.join(ASF::SVN['foundation'], 'potential-member-watch-list.txt') |
| |
| nominations = text.scan(/^\s+\*\)\s+\w.*?\n\s*(?:---|\Z)/m) |
| |
| i = 0 |
| member_watch_list = {} |
| nominations.each do |nomination| |
| id = nil |
| name = nomination[/\*\)\s+(.+?)\s+(\(|\<|$)/,1] |
| id ||= nomination[/\*\)\s.+?\s\((.*?)\)/,1] |
| id ||= nomination[/\*\)\s.+?\s<(.*?)@apache.org>/,1] |
| |
| unless id |
| id = "notinavail_#{i+=1}" |
| find(id).attrs['cn'] = name |
| end |
| |
| member_watch_list[find(id)] = nomination |
| end |
| |
| @member_watch_list = member_watch_list |
| end |
| |
| # This person's entry in <tt>potential-member-watch-list.txt</tt>. |
| def member_watch |
| text = Person.member_watch_list[self] |
| if text |
| text.sub!(/\A\s*\n/,'') |
| text.sub!(/\n---\Z/,'') |
| end |
| text |
| end |
| end |
| end |