Class: TypingTrainer::Level

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number: nil, letters: nil, sentences: [], filename: nil, layout: nil) ⇒ Level

Returns a new instance of Level.



8
9
10
11
12
13
14
15
16
17
# File 'lib/typing_trainer/level.rb', line 8

def initialize(number: nil, letters: nil, sentences: [], filename: nil, layout: nil)
  throw "Missing layout!" unless layout
  throw "Missing sentences!" unless sentences.count > 0
  @number = number
  @letters = letters
  @sentences = sentences
  @layout_id = layout
  layouts = TypingTrainer::KeyboardLayout::LAYOUTS
  @layout = layouts[layout]
end

Instance Attribute Details

#lettersObject (readonly)

Returns the value of attribute letters.



6
7
8
# File 'lib/typing_trainer/level.rb', line 6

def letters
  @letters
end

#numberObject (readonly)

Returns the value of attribute number.



5
6
7
# File 'lib/typing_trainer/level.rb', line 5

def number
  @number
end

#sentencesObject (readonly)

Returns the value of attribute sentences.



4
5
6
# File 'lib/typing_trainer/level.rb', line 4

def sentences
  @sentences
end

Instance Method Details

#finger(letter) ⇒ Object



31
32
33
# File 'lib/typing_trainer/level.rb', line 31

def finger(letter)
  @layout::FINGER[letter.downcase]
end

#header(width) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/typing_trainer/level.rb', line 19

def header(width)
  if @number
    puts "Playing Level #{@number}"
    puts "-"*width
    puts
  elsif @letters && @letters.size == 1
    puts "New letter: #{@letters[0].upcase}"
    puts "-"*width
    puts
  end
end

#next_letter(level) ⇒ Object

What is the next letter to learn after beating this level?



41
42
43
# File 'lib/typing_trainer/level.rb', line 41

def next_letter(level)
  @layout::LETTER_PROGRESSION[level]
end

#next_level(letter) ⇒ Object

What is the next level if you know up to this letter?



36
37
38
# File 'lib/typing_trainer/level.rb', line 36

def next_level(letter)
  @layout::LETTER_PROGRESSION.index(letter.downcase) + 1
end