This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git


The following commit(s) were added to refs/heads/master by this push:
     new 57775e06 Add methods to get canonical member status
57775e06 is described below

commit 57775e06cb3a633f07aee4ba41c7c198f005087a
Author: Sebb <[email protected]>
AuthorDate: Wed Feb 8 16:58:36 2023 +0000

    Add methods to get canonical member status
---
 lib/whimsy/asf/member.rb | 21 +++++++++++++++++++++
 lib/whimsy/asf/person.rb |  9 +++++++++
 2 files changed, 30 insertions(+)

diff --git a/lib/whimsy/asf/member.rb b/lib/whimsy/asf/member.rb
index f7cbec64..c5589015 100644
--- a/lib/whimsy/asf/member.rb
+++ b/lib/whimsy/asf/member.rb
@@ -44,6 +44,27 @@ module ASF
       result
     end
 
+    # return the status of a member:
+    # - nil
+    # - :current
+    # - :emeritus
+    # - :deceased
+    def self.member_status(id)
+      entry = list[id]
+      return nil if entry.nil?
+      status = entry['status']
+      case status
+      when nil
+        :current
+      when %r{^Emeritus }
+        :emeritus
+      when %r{^Deceased }
+        :deceased
+      else
+        raise "Unexpected status: #{status.inspect} for #{id}"
+      end
+    end
+
     # Find the ASF::Person associated with a given email
     def self.find_by_email(value)
       value = value.downcase
diff --git a/lib/whimsy/asf/person.rb b/lib/whimsy/asf/person.rb
index b308707f..df357d9b 100644
--- a/lib/whimsy/asf/person.rb
+++ b/lib/whimsy/asf/person.rb
@@ -274,5 +274,14 @@ module ASF
     def asf_chair_or_member?
       asf_member? or ASF.pmc_chairs.include? self
     end
+
+    # Returns ASF membership status according to members.txt:
+    # <tt>:current</tt> if this person is listed as an ASF member
+    # <tt>:emeritus</tt> if this person is listed as an Emeritus ASF member
+    # <tt>:deceased</tt> if this person is listed as a Deceased ASF member
+    # <tt>nil</tt> otherwise (i.e. does not appear in members.txt)
+    def asf_member_status
+      ASF::Member.member_status name
+    end
   end
 end

Reply via email to