Sha256: 21eaf4f2f7a240fe0e22c2facc83ea33f8c599449c753e85de7fe9d1104fb433

Contents?: true

Size: 894 Bytes

Versions: 1

Compression:

Stored size: 894 Bytes

Contents

require 'weakref'

module ASF

  class Person < Base
  
    def self.member_nominees
      begin
        return Hash[@member_nominees.to_a] if @member_nominees
      rescue
      end

      meetings = ASF::SVN['private/foundation/Meetings']
      nominations = Dir["#{meetings}/*/nominated-members.txt"].sort.last.untaint

      nominations = File.read(nominations).split(/^\s*---+\s*/)
      nominations.shift(2)

      nominees = {}
      nominations.each do |nomination|
        id = nomination[/^\s?\w+.*<(\S+)@apache.org>/,1]
        id ||= nomination[/^\s?\w+.*\((\S+)@apache.org\)/,1]
        id ||= nomination[/^\s?\w+.*\(([a-z]+)\)/,1]

        next unless id

        nominees[find(id)] = nomination
      end

      @member_nominees = WeakRef.new(nominees)
      nominees
    end

    def member_nomination
      @member_nomination ||= Person.member_nominees[self]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whimsy-asf-0.0.77 lib/whimsy/asf/nominees.rb