cw 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -3
- data/.travis.yml +1 -1
- data/README.md +16 -40
- data/Rakefile +4 -0
- data/VERSION +1 -0
- data/bin/cw +44 -0
- data/cw.gemspec +8 -5
- data/data/text/{adv_of_sh_holmes.txt → book.txt} +4 -4
- data/example.rb +17 -17
- data/lib/cw.rb +53 -18
- data/lib/cw/alphabet.rb +37 -0
- data/lib/cw/audio_player.rb +31 -3
- data/lib/cw/book.rb +14 -7
- data/lib/cw/book_details.rb +2 -2
- data/lib/cw/cl.rb +11 -2
- data/lib/cw/config_file.rb +69 -0
- data/lib/cw/cw_dsl.rb +19 -57
- data/lib/cw/monitor_keys.rb +1 -1
- data/lib/cw/params.rb +104 -0
- data/lib/cw/print.rb +19 -23
- data/lib/cw/repeat_word.rb +2 -2
- data/lib/cw/reveal.rb +47 -0
- data/lib/cw/sentence.rb +22 -2
- data/lib/cw/test_words.rb +1 -1
- data/lib/cw/tester.rb +17 -4
- data/lib/cw/timing.rb +1 -1
- data/lib/cw/tone_generator.rb +2 -2
- data/lib/cw/words.rb +20 -1
- data/test/test_cw.rb +8 -11
- data/test/test_tester.rb +62 -0
- metadata +30 -14
- data/classes.svg +0 -145
- data/classes.svg.dot +0 -360
- data/daily.rb +0 -182
- data/data/text/progress.txt +0 -1
- data/lib/cw/cw_params.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e1587225798871292fb766303aa33e8aa488d72
|
4
|
+
data.tar.gz: 7d75a4190163a579f8cc88f9287e579c1657facd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85ec2d8ab4291cae6fa85f3e02700a080e4bdba7e634378de4d445c656b0b39375805978a80ce4e93fa1388c128815d96d6a4fcfab0302b451766d57661e790d
|
7
|
+
data.tar.gz: 4e61d5b90e40004359ae53751555c3de33a135f02c333ce9d15fc842b0b227b09a77e84846b26841cc1bc4dff77c30f15aae1e1eb0639c130a9e799a9a9ad9cd
|
data/.gitignore
CHANGED
@@ -8,7 +8,7 @@ Gemfile.lock
|
|
8
8
|
*.gem
|
9
9
|
*.rbc
|
10
10
|
.bundle
|
11
|
-
.
|
11
|
+
.cw_config
|
12
12
|
coverage
|
13
13
|
InstalledFiles
|
14
14
|
lib/bundler/man
|
@@ -18,13 +18,13 @@ spec/reports
|
|
18
18
|
test/tmp
|
19
19
|
test/version_tmp
|
20
20
|
tmp
|
21
|
-
|
21
|
+
books/
|
22
22
|
# YARD artifacts
|
23
23
|
.yardoc
|
24
24
|
_yardoc
|
25
25
|
doc/
|
26
26
|
/.ruby_version/
|
27
|
-
|
27
|
+
/data/text/progress.txt
|
28
28
|
audio/audio_output.wav
|
29
29
|
/audio/dash.wav
|
30
30
|
/audio/audio_output.wav
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -3,70 +3,67 @@
|
|
3
3
|
[![Code Climate](https://codeclimate.com/github/mjago/CW/badges/gpa.svg)](https://codeclimate.com/github/mjago/CW)
|
4
4
|
[![Dependency Status](https://gemnasium.com/badges/github.com/mjago/CW.svg)](https://gemnasium.com/github.com/mjago/CW)
|
5
5
|
|
6
|
+
# Documentation:
|
7
|
+
|
8
|
+
**[CW Documentation](http://mjago.github.io/CW/)**
|
9
|
+
|
6
10
|
## CW
|
7
11
|
|
8
|
-
CW is a
|
9
|
-
real-time learning and testing of Morse Code. Great emphasis is placed on enabling tests to use fresh material each test run, rather than the constant repetition of old material.
|
12
|
+
**CW** is a program for learning and practicing Morse Code (CW). It is written in the form of a [DSL](https://en.wikipedia.org/wiki/Domain-specific_language/) in the [Ruby](https://www.ruby-lang.org/en/downloads/) language.
|
10
13
|
|
11
|
-
CW can read
|
12
|
-
addition to generating random words, letters, and numbers that possibly match some required pattern
|
13
|
-
(i.e. words_beginning_with 'v').
|
14
|
+
**CW** can read _books_ (and remember where you are), _rss feeds_ (your daily quotation for instance), common _phrases_, _QSO_ codes etc, in
|
15
|
+
addition to generating random words, letters, and numbers that possibly match some required pattern (i.e. words_beginning_with 'v').
|
14
16
|
|
15
|
-
CW also allows for real-time progress marking by indicating correct and incorrect characters and words copied in real-time. A follow mode also exists which prints the output just after it has played it (for `in head' practice).
|
17
|
+
**CW** also allows for real-time progress marking by indicating correct and incorrect characters and words copied in real-time. A follow mode also exists which prints the output just after it has played it (for `in head' practice).
|
16
18
|
|
19
|
+
**CW** is thoroughly [documented](http://mjago.github.io/CW/), and includes a [hands-on tutorial](http://mjago.github.io/CW/mydoc_five_common_words/).
|
17
20
|
|
18
21
|
# Installation:
|
19
22
|
|
20
23
|
```sh
|
21
|
-
|
22
24
|
gem install cw
|
23
25
|
ruby example.rb
|
24
|
-
|
25
26
|
```
|
26
27
|
|
27
28
|
* Note: Currently only tested on OS X, and Ruby v1.9.3 and later.
|
28
29
|
|
29
|
-
# Documentation:
|
30
|
-
|
31
|
-
[CW Documentation](http://mjago.github.io/CW/)
|
32
|
-
|
33
30
|
# Example test-script
|
34
31
|
|
35
32
|
```ruby
|
36
33
|
|
37
|
-
|
34
|
+
# example.rb (example script)
|
38
35
|
|
39
36
|
require 'cw'
|
40
37
|
|
41
|
-
|
38
|
+
cw do
|
42
39
|
wpm 18
|
43
40
|
comment 'read book (1 sentence)'
|
44
41
|
play_book(sentences: 1)
|
45
42
|
end
|
46
43
|
|
47
|
-
|
44
|
+
cw do
|
48
45
|
wpm 18
|
49
46
|
ewpm 12
|
50
47
|
comment 'read book (2 minutes)'
|
51
48
|
play_book(duration: 2)
|
52
49
|
end
|
53
50
|
|
54
|
-
|
51
|
+
cw do
|
55
52
|
comment 'read rss feed (1 article)'
|
56
53
|
read_rss(:reuters, 1)
|
57
54
|
end
|
58
55
|
|
59
|
-
|
56
|
+
cw do
|
60
57
|
name 'test straight alphabet'
|
61
58
|
alphabet
|
62
59
|
end
|
63
60
|
|
64
|
-
|
61
|
+
cw do
|
65
62
|
comment 'test straight numbers'
|
66
63
|
numbers
|
67
64
|
end
|
68
65
|
|
69
|
-
|
66
|
+
cw do
|
70
67
|
wpm 18
|
71
68
|
ewpm 12
|
72
69
|
load_abbreviations
|
@@ -129,27 +126,6 @@ test.test_letters
|
|
129
126
|
|
130
127
|
```
|
131
128
|
|
132
|
-
# Options:
|
133
|
-
|
134
|
-
Command / Alias
|
135
|
-
---------------
|
136
|
-
- ewpm / effective_wpm
|
137
|
-
- no_run / pause
|
138
|
-
- comment / name
|
139
|
-
- repeat_word / double_words
|
140
|
-
- word_length / word_size
|
141
|
-
- word_shuffle / shuffle
|
142
|
-
- random_letters
|
143
|
-
- random_numbers
|
144
|
-
- having_size_of / word_size
|
145
|
-
- number_of_words / word_count
|
146
|
-
- words_including / including
|
147
|
-
- words_ending_with / ending_with
|
148
|
-
- random_alphanumeric / random_letters_numbers
|
149
|
-
- words_beginning_with / beginning_with
|
150
|
-
- words_no_longer_than / no_longer_than
|
151
|
-
- words_no_shorter_than / no_shorter_than
|
152
|
-
|
153
129
|
# License
|
154
130
|
|
155
131
|
[MIT License](https://raw.githubusercontent.com/mjago/CW/master/LICENSE)
|
data/Rakefile
CHANGED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.2.4
|
data/bin/cw
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
iterate = nil
|
4
|
+
count = 1
|
5
|
+
def number_or_nil(string)
|
6
|
+
Integer(string || '')
|
7
|
+
rescue ArgumentError
|
8
|
+
nil
|
9
|
+
end
|
10
|
+
|
11
|
+
def iterate?
|
12
|
+
number_or_nil ARGV[ARGV.size - 1]
|
13
|
+
end
|
14
|
+
|
15
|
+
if iterate?
|
16
|
+
count = ARGV.pop.to_i
|
17
|
+
iterate = true
|
18
|
+
end
|
19
|
+
|
20
|
+
def check_file_exists? file
|
21
|
+
File.exists? file
|
22
|
+
end
|
23
|
+
|
24
|
+
def check_sans_extension file
|
25
|
+
File.exists?("#{file}.rb")
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_filename file
|
29
|
+
return_val = nil
|
30
|
+
if check_file_exists?(file)
|
31
|
+
return_val = file
|
32
|
+
elsif check_sans_extension(file)
|
33
|
+
return_val = "#{file}.rb"
|
34
|
+
end
|
35
|
+
return_val
|
36
|
+
end
|
37
|
+
|
38
|
+
count.times do |iter|
|
39
|
+
print "Iteration: #{iter + 1} " if iterate
|
40
|
+
ARGV.each do |arg|
|
41
|
+
file = get_filename(arg)
|
42
|
+
system("ruby #{file}") if file
|
43
|
+
end
|
44
|
+
end
|
data/cw.gemspec
CHANGED
@@ -4,19 +4,21 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'cw'
|
7
|
-
spec.version =
|
7
|
+
spec.version = File.read('VERSION')
|
8
8
|
spec.date = '2016-05-21'
|
9
9
|
spec.authors = ["Martyn Jago"]
|
10
10
|
spec.email = ["martyn.jago@btinternet.com"]
|
11
11
|
spec.description = "A ruby library to help learn and practice morse code"
|
12
12
|
spec.summary = "CW tutor / exerciser"
|
13
|
-
spec.homepage = 'http://
|
13
|
+
spec.homepage = 'http://martynjago.co.uk/CW/'
|
14
14
|
spec.files = `git ls-files`.split($/)
|
15
|
+
spec.executables = "cw"
|
16
|
+
spec.bindir = 'bin'
|
15
17
|
spec.license = 'MIT'
|
16
18
|
|
17
19
|
spec.require_paths = ["lib", "audio", "data/text", "test"]
|
18
20
|
|
19
|
-
spec.required_ruby_version = '>=
|
21
|
+
spec.required_ruby_version = '>= 2.0.0'
|
20
22
|
spec.add_runtime_dependency 'feedjira', '>= 2.0.0'
|
21
23
|
spec.add_runtime_dependency 'htmlentities', '>= 4.3.4'
|
22
24
|
spec.add_runtime_dependency 'paint', '>= 1.0.1'
|
@@ -25,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
25
27
|
spec.add_runtime_dependency 'sanitize', '>= 4.0.1'
|
26
28
|
spec.add_runtime_dependency 'wavefile', '>= 0.7.0'
|
27
29
|
|
28
|
-
spec.add_development_dependency
|
29
|
-
spec.add_development_dependency
|
30
|
+
spec.add_development_dependency 'version', '>= 1.0.0'
|
31
|
+
spec.add_development_dependency 'minitest', '>= 5.8.4'
|
32
|
+
spec.add_development_dependency 'simplecov', '>= 0.12.0'
|
30
33
|
end
|
@@ -2185,8 +2185,8 @@ I smiled and shook my head. I can quite understand your thinking
|
|
2185
2185
|
so. I said. Of course, in your position of unofficial adviser and
|
2186
2186
|
helper to everybody who is absolutely puzzled, throughout three
|
2187
2187
|
continents, you are brought in contact with all that is strange and
|
2188
|
-
bizarre. But
|
2189
|
-
|
2188
|
+
bizarre. But here I picked up the morning paper from the
|
2189
|
+
ground let us put it to a practical test. Here is the first heading
|
2190
2190
|
upon which I come. A husbands cruelty to his wife. There is half a
|
2191
2191
|
column of print, but I know without reading it that it is all
|
2192
2192
|
perfectly familiar to me. There is, of course, the other woman, the
|
@@ -9033,7 +9033,7 @@ inquiry on hand and that you disliked the intrusion of other
|
|
9033
9033
|
matters.
|
9034
9034
|
|
9035
9035
|
Oh, you mean the little problem of the Grosvenor Square furniture
|
9036
|
-
van. That is quite cleared up
|
9036
|
+
van. That is quite cleared up now though, indeed, it was obvious
|
9037
9037
|
from the first. Pray give me the results of your newspaper
|
9038
9038
|
selections.
|
9039
9039
|
|
@@ -9081,7 +9081,7 @@ say that the marriage would be an absolutely quiet one, that it would
|
|
9081
9081
|
be at St. Georges, Hanover Square, that only half a dozen intimate
|
9082
9082
|
friends would be invited, and that the party would return to the
|
9083
9083
|
furnished house at Lancaster Gate which has been taken by Mr.
|
9084
|
-
Aloysius Doran. Two days
|
9084
|
+
Aloysius Doran. Two days later that is, on Wednesday lastthere is
|
9085
9085
|
a curt announcement that the wedding had taken place, and that the
|
9086
9086
|
honeymoon would be passed at Lord Backwaters place, near
|
9087
9087
|
Petersfield. Those are all the notices which appeared before the
|
data/example.rb
CHANGED
@@ -1,38 +1,38 @@
|
|
1
1
|
require 'cw'
|
2
2
|
|
3
|
-
|
3
|
+
cw do
|
4
4
|
comment 'read book feed (1 sentence)'
|
5
|
-
|
5
|
+
read_book(sentences: 1)
|
6
6
|
end
|
7
7
|
|
8
|
-
|
8
|
+
cw do
|
9
9
|
comment 'read book feed (1 minute)'
|
10
|
-
|
10
|
+
read_book(duration: 1)
|
11
11
|
end
|
12
12
|
|
13
|
-
|
13
|
+
cw do
|
14
14
|
comment 'read rss feed (1 article)'
|
15
15
|
read_rss(:reuters, 1)
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
cw do
|
19
19
|
name 'test straight alphabet'
|
20
20
|
alphabet
|
21
21
|
end
|
22
22
|
|
23
|
-
|
23
|
+
cw do
|
24
24
|
comment 'test straight numbers'
|
25
25
|
numbers
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
cw do
|
29
29
|
wpm 18
|
30
30
|
ewpm 12
|
31
31
|
load_abbreviations
|
32
32
|
shuffle
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
cw do
|
36
36
|
wpm 18
|
37
37
|
ewpm 12
|
38
38
|
load_q_codes
|
@@ -52,20 +52,20 @@ def cw_settings
|
|
52
52
|
puts self.to_s
|
53
53
|
end
|
54
54
|
|
55
|
-
|
55
|
+
cw do
|
56
56
|
comment 'test random letters'
|
57
57
|
random_letters(size: 4)
|
58
58
|
cw_settings
|
59
59
|
end
|
60
60
|
|
61
|
-
|
61
|
+
cw do
|
62
62
|
comment 'test random numbers'
|
63
63
|
# use_ebook2cw
|
64
64
|
cw_settings
|
65
65
|
random_numbers(count: 2, size: 5)
|
66
66
|
end
|
67
67
|
|
68
|
-
|
68
|
+
cw do
|
69
69
|
comment 'test random letters numbers'
|
70
70
|
# use_ebook2cw
|
71
71
|
cw_settings
|
@@ -76,7 +76,7 @@ wpm = 15
|
|
76
76
|
ewpm = 12
|
77
77
|
loop do
|
78
78
|
|
79
|
-
test =
|
79
|
+
test = cw
|
80
80
|
# test.use_ebook2cw
|
81
81
|
test.comment 'test words beginning with b'
|
82
82
|
test.shuffle
|
@@ -88,7 +88,7 @@ loop do
|
|
88
88
|
puts test.to_s
|
89
89
|
test.test_words
|
90
90
|
|
91
|
-
test =
|
91
|
+
test = cw
|
92
92
|
test.comment 'test words including ing'
|
93
93
|
# test.use_ebook2cw
|
94
94
|
test.shuffle
|
@@ -98,7 +98,7 @@ loop do
|
|
98
98
|
test.word_count 5
|
99
99
|
test.test_words
|
100
100
|
|
101
|
-
# test =
|
101
|
+
# test = cw
|
102
102
|
# test.comment 'test ing'
|
103
103
|
# test.use_ebook2cw
|
104
104
|
## test.shuffle
|
@@ -109,7 +109,7 @@ loop do
|
|
109
109
|
# test.word_count 5
|
110
110
|
# test.test_words
|
111
111
|
#
|
112
|
-
# test =
|
112
|
+
# test = cw
|
113
113
|
# test.comment 'test ing'
|
114
114
|
# test.use_ruby_tone
|
115
115
|
## test.shuffle
|
@@ -120,7 +120,7 @@ loop do
|
|
120
120
|
# test.word_count 5
|
121
121
|
# test.test_words
|
122
122
|
|
123
|
-
# test =
|
123
|
+
# test = cw
|
124
124
|
# test.comment 'test ing'
|
125
125
|
# test.shuffle
|
126
126
|
# test.wpm wpm
|
data/lib/cw.rb
CHANGED
@@ -15,7 +15,7 @@ require_relative 'cw/str'
|
|
15
15
|
require_relative 'cw/rss'
|
16
16
|
require_relative 'cw/words'
|
17
17
|
require_relative 'cw/cl'
|
18
|
-
require_relative 'cw/
|
18
|
+
require_relative 'cw/params'
|
19
19
|
require_relative 'cw/key_input'
|
20
20
|
require_relative 'cw/cw_stream'
|
21
21
|
require_relative 'cw/timing'
|
@@ -27,23 +27,43 @@ require_relative 'cw/tester'
|
|
27
27
|
require_relative 'cw/test_words'
|
28
28
|
require_relative 'cw/test_letters'
|
29
29
|
require_relative 'cw/repeat_word'
|
30
|
+
require_relative 'cw/reveal'
|
30
31
|
require_relative 'cw/book'
|
31
32
|
require_relative 'cw/cw_encoding'
|
32
|
-
require_relative 'cw/tone_generator
|
33
|
+
require_relative 'cw/tone_generator'
|
33
34
|
require_relative 'cw/progress'
|
35
|
+
require_relative 'cw/config_file'
|
34
36
|
|
35
37
|
# CW provides Morse code generation functionality
|
36
38
|
|
39
|
+
def cw &block
|
40
|
+
CW.new do
|
41
|
+
instance_eval &block
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
37
45
|
class CW < CwDsl
|
38
46
|
|
39
47
|
#FIXME dry_run
|
40
48
|
# attr_accessor :dry_run
|
41
49
|
|
50
|
+
# Initialize CW class. Eval block if passed in.
|
51
|
+
|
52
|
+
def initialize(&block)
|
53
|
+
|
54
|
+
super
|
55
|
+
|
56
|
+
load_common_words# unless @words.exist?
|
57
|
+
ConfigFile.new.apply_config self
|
58
|
+
instance_eval(&block) if block
|
59
|
+
run if block
|
60
|
+
end
|
61
|
+
|
42
62
|
# Test user against letters rather than words.
|
43
63
|
#
|
44
64
|
|
45
65
|
def test_letters
|
46
|
-
|
66
|
+
Params.pause = true
|
47
67
|
test_letters = TestLetters.new
|
48
68
|
test_letters.run @words
|
49
69
|
end
|
@@ -52,6 +72,7 @@ class CW < CwDsl
|
|
52
72
|
#
|
53
73
|
|
54
74
|
def test_words
|
75
|
+
Params.pause = true
|
55
76
|
tw = TestWords.new
|
56
77
|
tw.run @words
|
57
78
|
end
|
@@ -60,21 +81,18 @@ class CW < CwDsl
|
|
60
81
|
#
|
61
82
|
|
62
83
|
def repeat_word
|
63
|
-
|
84
|
+
Params.pause = true
|
64
85
|
repeat_word = RepeatWord.new
|
65
86
|
repeat_word.run @words
|
66
87
|
end
|
67
88
|
|
68
|
-
#
|
69
|
-
|
89
|
+
# Reveal words only at end of test.
|
90
|
+
# Useful for learning to copy `in the head'
|
70
91
|
|
71
|
-
def
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
load_common_words# unless @words.exist?
|
76
|
-
instance_eval(&block) if block
|
77
|
-
run unless Params.pause if (block && ! @inhibit_block_run)
|
92
|
+
def reveal
|
93
|
+
Params.pause = true
|
94
|
+
reveal = Reveal.new
|
95
|
+
reveal.run @words
|
78
96
|
end
|
79
97
|
|
80
98
|
# Return string containing name or comment of test.
|
@@ -84,20 +102,35 @@ class CW < CwDsl
|
|
84
102
|
@str.to_s
|
85
103
|
end
|
86
104
|
|
105
|
+
def list
|
106
|
+
Print.new.list self.to_s
|
107
|
+
puts
|
108
|
+
end
|
109
|
+
|
87
110
|
# Play book using provided arguments.
|
88
111
|
# @param [Hash] args the options to play book with.
|
89
112
|
# @option args [Integer] :sentences Number of sentences to play
|
90
113
|
# @option args [Integer] :duration Number of minutes to play
|
91
114
|
# @option args [Boolean] :letter Mark by letter if true else mark by word
|
92
115
|
|
93
|
-
def
|
94
|
-
|
116
|
+
def read_book args = {}
|
117
|
+
Params.pause = true
|
95
118
|
details = BookDetails.new
|
96
119
|
details.arguments(args)
|
97
120
|
book = Book.new details
|
98
121
|
book.run @words
|
99
122
|
end
|
100
123
|
|
124
|
+
# Convert book to mp3.
|
125
|
+
|
126
|
+
def convert_book args = {}
|
127
|
+
details = BookDetails.new
|
128
|
+
details.arguments(args)
|
129
|
+
book = Book.new details
|
130
|
+
Params.pause = true
|
131
|
+
book.convert
|
132
|
+
end
|
133
|
+
|
101
134
|
# Reads RSS feed (requires an internet connection). Feed can be one of:
|
102
135
|
# - bbc:
|
103
136
|
# - reuters:
|
@@ -107,7 +140,7 @@ class CW < CwDsl
|
|
107
140
|
# @param [Integer] article_count Number of articles to play.
|
108
141
|
|
109
142
|
def read_rss(source, article_count = 3)
|
110
|
-
|
143
|
+
Params.pause = true
|
111
144
|
rss, = Rss.new
|
112
145
|
rss.read_rss(source, article_count)
|
113
146
|
loop do
|
@@ -119,12 +152,14 @@ class CW < CwDsl
|
|
119
152
|
end
|
120
153
|
|
121
154
|
# Run word test
|
122
|
-
def run
|
155
|
+
def run
|
156
|
+
return if Params.pause
|
157
|
+
test_words
|
158
|
+
end
|
123
159
|
|
124
160
|
alias_method :ewpm, :effective_wpm
|
125
161
|
alias_method :no_run, :pause
|
126
162
|
alias_method :comment, :name
|
127
|
-
# alias_method :repeat_word, :double_words
|
128
163
|
alias_method :word_length, :word_size
|
129
164
|
alias_method :word_shuffle, :shuffle
|
130
165
|
alias_method :having_size_of, :word_size
|