Class: Ast::Training

Inherits:
Object
  • Object
show all
Defined in:
lib/ast.rb

Overview

This class represents a training with a name, sessions and intervals.

Instance Method Summary collapse

Constructor Details

#initializeTraining

Initialization method for the Training class. Params:

name

the name of the training



30
31
32
33
34
# File 'lib/ast.rb', line 30

def initialize
  @speed = []
  @interval = []
  @power = []
end

Instance Method Details

#interval(name, &block) ⇒ Object

Building a new interval from the domain specific language. Params:

name

the name of the interval

block

interval data



52
53
54
55
56
# File 'lib/ast.rb', line 52

def interval(name, &block)
  interval_data = Interval.new(name)
  interval_data.instance_eval(&block)
  @interval << interval_data
end

#jsonObject

Converting a training to a JSON-ized string.



84
85
86
87
88
89
90
91
# File 'lib/ast.rb', line 84

def json
  training_json = {
    speed: @speed.collect(&:to_hash),
    interval: @interval.collect(&:to_hash),
    power: @power.collect(&:to_hash)
  }
  JSON.pretty_generate(training_json)
end

#power(name, &block) ⇒ Object

Building a new power session from the domain specific language. Params:

name

the name of the power session

block

power session data



63
64
65
66
67
# File 'lib/ast.rb', line 63

def power(name, &block)
  power_data = Power.new(name)
  power_data.instance_eval(&block)
  @power << power_data
end

#save_to_file(filename) ⇒ Object

Saving a training to a JSON file. Params:

filename

the desired name of the file



97
98
99
100
101
# File 'lib/ast.rb', line 97

def save_to_file(filename)
  f = File.open("../trainings/#{filename}", 'w')
  f.puts(json)
  f.close
end

#speed(name, &block) ⇒ Object

Building a new speed session from the domain specific language. Params:

name

the name of the speed session

block

speed session data



41
42
43
44
45
# File 'lib/ast.rb', line 41

def speed(name, &block)
  training_type = Speed.new(name)
  training_type.instance_eval(&block)
  @speed << training_type
end

#to_sObject

Converting a training to a string.



71
72
73
74
75
76
77
78
79
80
# File 'lib/ast.rb', line 71

def to_s
  speed_number = @speed.length
  interval_number = @interval.length
  power_number = @power.length

  "TRAINING DATA:\n"\
  "Speed sessions: #{speed_number}\n"\
  "Interval sessions: #{interval_number}\n"\
  "Power sessions: #{power_number}\n\n"
end