class Kit::Member
An individual USA Cycling member
Attributes
races[R]
Public Class Methods
from_table(table)
click to toggle source
Given an HTML table of races, return a Member
with that collection of races
@param table [Kit::Table] @return [Kit::Member]
# File lib/kit/member.rb, line 13 def self.from_table(table) date_parser = DateParser.new maybe_content = -> (element) { element.nil? ? nil : element.content } races = table.map do |race_row, result_row| [ result_row.css('td')[2].content, [ race_row.css('a').first.content, maybe_content.call(race_row.css('[title=age]').first) ].compact.join(' '), result_row.css('td')[0].content, date_parser.parse(race_row), result_row.css('td').last.content ] end.map do |args| Kit::Race.new(*args) end new(races) end
new(races = [])
click to toggle source
@param races [Array<Kit::Race>]
# File lib/kit/member.rb, line 54 def initialize(races = []) @races = races end
Private Class Methods
preserve_container_for(*enumerable_methods)
click to toggle source
# File lib/kit/member.rb, line 40 def self.preserve_container_for(*enumerable_methods) enumerable_methods.each do |method_name| define_method(method_name) do |*args, &block| Member.new(races.method(method_name).call(*args, &block)) end end end
Public Instance Methods
limited_to(years)
click to toggle source
Returns a Member
with a collection of races limited to the given list of years.
@param years [Array<Fixnum>] a list of one or more years (e.g. 2010) @return [Kit::Member]
# File lib/kit/member.rb, line 63 def limited_to(years) selected_races = years.reduce([]) do |races, year| lower = Date.strptime("#{year}-01-01") upper = Date.strptime("#{Integer(year) + 1}-01-01") races | @races.select do |race| race.date >= lower && race.date < upper end end self.class.new(selected_races) end