Module: RunIcal::Data

Defined in:
lib/run_ical/data.rb,
lib/run_ical/data/marathon_3.rb,
lib/run_ical/data/novice_5_k.rb,
lib/run_ical/data/novice_8_k.rb,
lib/run_ical/data/novice_10_k.rb,
lib/run_ical/data/novice_15_k.rb,
lib/run_ical/data/walkers_5_k.rb,
lib/run_ical/data/advanced_5_k.rb,
lib/run_ical/data/advanced_8_k.rb,
lib/run_ical/data/walking_10_k.rb,
lib/run_ical/data/advanced_10_k.rb,
lib/run_ical/data/advanced_15_k.rb,
lib/run_ical/data/marathon_senior.rb,
lib/run_ical/data/intermediate_5_k.rb,
lib/run_ical/data/intermediate_8_k.rb,
lib/run_ical/data/marathon_novice1.rb,
lib/run_ical/data/marathon_novice2.rb,
lib/run_ical/data/half_marathon_hm3.rb,
lib/run_ical/data/intermediate_10_k.rb,
lib/run_ical/data/intermediate_15_k.rb,
lib/run_ical/data/marathon_advanced1.rb,
lib/run_ical/data/marathon_advanced2.rb,
lib/run_ical/data/half_marathon_novice1.rb,
lib/run_ical/data/half_marathon_novice2.rb,
lib/run_ical/data/half_marathon_walkers.rb,
lib/run_ical/data/marathon_boston_bound.rb,
lib/run_ical/data/half_marathon_advanced.rb,
lib/run_ical/data/marathon_intermediate1.rb,
lib/run_ical/data/marathon_intermediate2.rb,
lib/run_ical/data/marathon_personal_best.rb,
lib/run_ical/data/marathon_novice_supreme.rb,
lib/run_ical/data/marathon_dopey_challenge.rb,
lib/run_ical/data/half_marathon_intermediate1.rb,
lib/run_ical/data/half_marathon_intermediate2.rb

Overview

Namespace for the training plans in lib/run_ical/data.

constants returns them in load order, which is alphabetical by filename and puts every Advanced plan before every Novice one. These helpers present them the way a runner would expect: by distance ascending, then by difficulty.

Defined Under Namespace

Classes: Advanced10K, Advanced15K, Advanced5K, Advanced8K, HalfMarathonAdvanced, HalfMarathonHM3, HalfMarathonIntermediate1, HalfMarathonIntermediate2, HalfMarathonNovice1, HalfMarathonNovice2, HalfMarathonWalkers, Intermediate10K, Intermediate15K, Intermediate5K, Intermediate8K, Marathon3, MarathonAdvanced1, MarathonAdvanced2, MarathonBostonBound, MarathonDopeyChallenge, MarathonIntermediate1, MarathonIntermediate2, MarathonNovice1, MarathonNovice2, MarathonNoviceSupreme, MarathonPersonalBest, MarathonSenior, Novice10K, Novice15K, Novice5K, Novice8K, Walkers5K, Walking10K

Class Method Summary collapse

Class Method Details

.by_distanceObject

Programs grouped by distance, both groups and members in display order. Suitable for rendering s.

RunIcal::Data.by_distance["5-K"].map(&:DESCRIPTION)
#=> ["5-K - Novice", "5-K - Intermediate", ...]


21
22
23
# File 'lib/run_ical/data.rb', line 21

def by_distance
  programs.group_by { |program| program::DISTANCE }
end

.find(name) ⇒ Object

Look up a program class by its name, or nil.



26
27
28
29
30
# File 'lib/run_ical/data.rb', line 26

def find(name)
  return nil unless constants.include?(name.to_sym)

  const_get(name.to_sym)
end

.programsObject

Every program class, ordered for display.



12
13
14
# File 'lib/run_ical/data.rb', line 12

def programs
  constants.map { |name| const_get(name) }.sort_by { |program| program::POSITION }
end