www/roster/parse_members.rb (28 lines of code) (raw):

#!/usr/bin/env ruby # Parse foundation/members.md from main website require 'net/http' URL = 'https://raw.githubusercontent.com/apache/www-site/refs/heads/main/content/foundation/members.md' def parse_section(section, status) section.each do |line| if line =~ %r{^\|\s+(\S+)\s+\|} uid = $1 unless %w{Id ?}.include? uid yield [status, uid] end end end end def parse_members(&block) response = Net::HTTP.get_response(URI(URL)) response.value() # Raises error if not OK content = response.body content.split("\n").slice_before(/^##/).each do |slice| title = slice.first if title =~ %r{^## (\S+) Members} parse_section(slice, $1, &block) unless $1 == 'Deceased' end end end if __FILE__ == $0 parse_members do |status, id| p [status, id] end end