class PistePal::SeasonPass

Attributes

days[RW]
distance[RW]
maximum_speed[RW]
resorts[RW]
runs[RW]
total_hours[RW]
vertical[RW]

Public Class Methods

new(files:) click to toggle source
# File lib/piste_pal/season_pass.rb, line 16
def initialize(files:)
  @days = []
  files.each do |f|
    @days.push(PistePal::DayPass.purchase(f))
  end

  @resorts = @days.map {|day| day.resort }.uniq
  @runs = @days.map {|day| day.runs.count }.reduce(0, :+)
  @vertical = {
    :value => @days.map {|day| day.vertical[:value] }.reduce(0, :+),
    :unit => @days.first.vertical[:unit]
  }
  @distance = {
    :value => @days.map {|day| day.distance[:value] }.reduce(0, :+),
    :unit => @days.first.distance[:unit]
  }

  @maximum_speed = generate_maximum_speed
  @total_hours = generate_total_hours
end
purchase(files) click to toggle source
# File lib/piste_pal/season_pass.rb, line 5
def self.purchase files
  new(files: files)
end

Private Instance Methods

generate_maximum_speed() click to toggle source
# File lib/piste_pal/season_pass.rb, line 37
def generate_maximum_speed
  maximum_speed = nil
  @days.each do |day|
    maximum_speed = day.maximum_speed if maximum_speed.nil? || day.maximum_speed[:value] > maximum_speed[:value]
  end
  return maximum_speed
end
generate_total_hours() click to toggle source
# File lib/piste_pal/season_pass.rb, line 45
def generate_total_hours
  @days.map {|day| day.total_hours }.reduce(0, :+)
end