cw 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.cw_config +9 -18
- data/.gitignore +1 -0
- data/README.md +10 -4
- data/VERSION +1 -1
- data/calculator.rb +63 -0
- data/chart.rb +33 -0
- data/chart2.rb +35 -0
- data/chart3.rb +47 -0
- data/chart4.rb +45 -0
- data/cw.gemspec +5 -3
- data/data/callsign/callsign.yaml +78 -0
- data/data/code/code.yaml +215 -0
- data/example.rb +18 -0
- data/lib/cw.rb +3 -0
- data/lib/cw/alphabet.rb +21 -6
- data/lib/cw/audio_player.rb +5 -8
- data/lib/cw/book.rb +0 -4
- data/lib/cw/book_details.rb +19 -8
- data/lib/cw/callsign.rb +59 -0
- data/lib/cw/cl.rb +12 -11
- data/lib/cw/common_words.rb +26 -3
- data/lib/cw/config.rb +14 -3
- data/lib/cw/cw_dsl.rb +11 -0
- data/lib/cw/cw_encoding.rb +49 -53
- data/lib/cw/file_details.rb +92 -19
- data/lib/cw/print.rb +10 -0
- data/lib/cw/read.rb +341 -0
- data/lib/cw/tone_generator.rb +6 -11
- data/lib/cw/words.rb +1 -1
- data/run_script_tests.rb +1 -1
- data/test/test_config.rb +0 -20
- data/test/test_cw.rb +14 -14
- metadata +20 -11
data/lib/cw/tone_generator.rb
CHANGED
@@ -23,6 +23,7 @@ module CWG
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def generate wrds
|
26
|
+
|
26
27
|
word_parts(wrds)
|
27
28
|
# progress.init elements.size * 3 + (wrds.size)
|
28
29
|
create_element_methods
|
@@ -31,7 +32,7 @@ module CWG
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def play_filename
|
34
|
-
File.join(
|
35
|
+
@play_filename ||= File.join(audio_dir, audio_filename)
|
35
36
|
end
|
36
37
|
|
37
38
|
def play
|
@@ -49,16 +50,16 @@ module CWG
|
|
49
50
|
|
50
51
|
def data
|
51
52
|
{ :dot => {:name => :dot,
|
52
|
-
:filename =>
|
53
|
+
:filename => dot_path,
|
53
54
|
:spb => (@sample_rate * 1.2 / @wpm).to_i },
|
54
55
|
:dash => {:name => :dash,
|
55
|
-
:filename =>
|
56
|
+
:filename => dash_path,
|
56
57
|
:spb => (@sample_rate * 3.6 / @wpm).to_i },
|
57
58
|
:space => {:name => :space,
|
58
|
-
:filename =>
|
59
|
+
:filename => space_path,
|
59
60
|
:spb => (@sample_rate * 1.2 / @wpm).to_i },
|
60
61
|
:e_space => {:name => :e_space,
|
61
|
-
:filename =>
|
62
|
+
:filename => e_space_path,
|
62
63
|
:spb => (@sample_rate * 1.2 / @effective_wpm).to_i }}
|
63
64
|
end
|
64
65
|
|
@@ -105,7 +106,6 @@ module CWG
|
|
105
106
|
|
106
107
|
def create_element_methods
|
107
108
|
elements.each do |ele|
|
108
|
-
# progress.increment
|
109
109
|
create_element_method ele
|
110
110
|
end
|
111
111
|
end
|
@@ -117,7 +117,6 @@ module CWG
|
|
117
117
|
|
118
118
|
def compile_fundamentals
|
119
119
|
elements.each do |ele|
|
120
|
-
# progress.increment
|
121
120
|
audio_samples = generate_samples ele
|
122
121
|
buffer = generate_buffer(audio_samples, ele)
|
123
122
|
write_element_audio_file ele, buffer
|
@@ -154,11 +153,9 @@ module CWG
|
|
154
153
|
@word_parts
|
155
154
|
end
|
156
155
|
|
157
|
-
|
158
156
|
def make_word_parts
|
159
157
|
parts = []
|
160
158
|
@word_parts.each do |part|
|
161
|
-
# progress.increment
|
162
159
|
parts += send_char part.downcase
|
163
160
|
end
|
164
161
|
parts
|
@@ -167,7 +164,6 @@ module CWG
|
|
167
164
|
def prepare_buffers
|
168
165
|
@buffers = {}
|
169
166
|
elements.each do |ele|
|
170
|
-
# progress.increment
|
171
167
|
@buffers[ele] = []
|
172
168
|
WaveFile::Reader.new(data[ele][:filename]).
|
173
169
|
each_buffer(data[ele][:spb]) do |buffer|
|
@@ -201,7 +197,6 @@ module CWG
|
|
201
197
|
:pcm_16,
|
202
198
|
@sample_rate)) do |writer|
|
203
199
|
yield.each do |char|
|
204
|
-
# progress.increment
|
205
200
|
char.each do |fta|
|
206
201
|
writer.write(@buffers[fta[:name]])
|
207
202
|
end
|
data/lib/cw/words.rb
CHANGED
data/run_script_tests.rb
CHANGED
@@ -8,7 +8,7 @@ class RunScriptTests
|
|
8
8
|
NO_RSS_FEED = DEBUG ? true : false
|
9
9
|
PATH_TO_CW_SCRIPTS = '/Users/martyn/jekyll/documentation-theme-jekyll/cw_scripts'
|
10
10
|
ROOT = '/Users/martyn/cw/cw_clone'
|
11
|
-
PROGRESS_FILE = "
|
11
|
+
PROGRESS_FILE = ".cw/bookmark.txt"
|
12
12
|
DB = Sequel.sqlite(File.join(ROOT, 'test.sqlite')) unless(TEST_ON_MEMORY_DATABASE)
|
13
13
|
DB = Sequel.sqlite if(TEST_ON_MEMORY_DATABASE)
|
14
14
|
|
data/test/test_config.rb
CHANGED
@@ -35,18 +35,6 @@ class TestConfig < MiniTest::Test
|
|
35
35
|
assert_equal "25", CWG::Cfg.config["wpm"]
|
36
36
|
end
|
37
37
|
|
38
|
-
def test_book_name_default
|
39
|
-
assert_equal "book.txt", CWG::Cfg.config["book_name"]
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_book_dir_default
|
43
|
-
assert_equal "data/text/", CWG::Cfg.config["book_dir"]
|
44
|
-
end
|
45
|
-
|
46
|
-
# def test_play_command_default
|
47
|
-
# assert_equal "/usr/bin/afplay", CWG::Cfg.config["play_command"]
|
48
|
-
# end
|
49
|
-
|
50
38
|
def test_success_colour_default
|
51
39
|
assert_equal "green", CWG::Cfg.config["success_colour"]
|
52
40
|
end
|
@@ -67,14 +55,6 @@ class TestConfig < MiniTest::Test
|
|
67
55
|
assert_equal "test_letters", CWG::Cfg.config["run_default"]
|
68
56
|
end
|
69
57
|
|
70
|
-
def test_dictionary_dir_default
|
71
|
-
assert_equal "data/text/", CWG::Cfg.config["dictionary_dir"]
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_dictionary_name_default
|
75
|
-
assert_equal "english.txt", CWG::Cfg.config["dictionary_name"]
|
76
|
-
end
|
77
|
-
|
78
58
|
def test_accessing_unknown_method_returns_nil
|
79
59
|
refute CWG::Cfg.config["unknown"]
|
80
60
|
end
|
data/test/test_cw.rb
CHANGED
@@ -408,18 +408,18 @@ Ending: x
|
|
408
408
|
|
409
409
|
def test_set_N_param_in_noise_mode
|
410
410
|
@cw.noise
|
411
|
-
assert @cw.instance_variable_get('@cl').cl_noise.include?('-N
|
411
|
+
assert @cw.instance_variable_get('@cl').cl_noise.include?('-N 10 '), 'noise N param invalid'
|
412
412
|
end
|
413
413
|
|
414
414
|
def test_set_B_param_in_noise_mode
|
415
415
|
@cw.noise
|
416
|
-
assert @cw.instance_variable_get('@cl').cl_noise.include?('-B
|
416
|
+
assert @cw.instance_variable_get('@cl').cl_noise.include?('-B 800 '), 'noise B param invalid'
|
417
417
|
end
|
418
418
|
|
419
|
-
def test_set_default_filename
|
420
|
-
assert @cw.instance_variable_get('@cl').cl_audio_filename.
|
421
|
-
include?('audio_output'), 'default audio output filename invalid'
|
422
|
-
end
|
419
|
+
# def test_set_default_filename
|
420
|
+
# assert @cw.instance_variable_get('@cl').cl_audio_filename.
|
421
|
+
# include?('audio_output'), 'default audio output filename invalid'
|
422
|
+
# end
|
423
423
|
|
424
424
|
def test_set_audio_filename_to_given_name
|
425
425
|
@cw.audio_filename('some name')
|
@@ -457,14 +457,14 @@ Ending: x
|
|
457
457
|
include?( '-x "some custom command"'), 'custom command invalid'
|
458
458
|
end
|
459
459
|
|
460
|
-
def test_cl_echo_returns_correct_string
|
461
|
-
str = ''
|
462
|
-
CW.new do
|
463
|
-
str = @cl.cl_echo('some words')
|
464
|
-
no_run
|
465
|
-
end
|
466
|
-
assert str.include?('some words')
|
467
|
-
end
|
460
|
+
# def test_cl_echo_returns_correct_string
|
461
|
+
# str = ''
|
462
|
+
# CW.new do
|
463
|
+
# str = @cl.cl_echo('some words')
|
464
|
+
# no_run
|
465
|
+
# end
|
466
|
+
# assert str.include?('some words')
|
467
|
+
# end
|
468
468
|
|
469
469
|
def test_words_exist
|
470
470
|
temp = nil
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martyn Jago
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 4.
|
89
|
+
version: 4.2.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 4.
|
96
|
+
version: 4.2.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: wavefile
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -196,30 +196,30 @@ dependencies:
|
|
196
196
|
name: sequel
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 4.38.0
|
202
202
|
type: :development
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 4.38.0
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: sqlite3
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - "~>"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 1.3.11
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- - "
|
220
|
+
- - "~>"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: 1.3.11
|
223
223
|
description: A ruby library to help learn and practice morse code
|
224
224
|
email:
|
225
225
|
- martyn.jago@btinternet.com
|
@@ -241,7 +241,14 @@ files:
|
|
241
241
|
- Vagrantfile
|
242
242
|
- audio/.gitkeep
|
243
243
|
- bin/cw
|
244
|
+
- calculator.rb
|
245
|
+
- chart.rb
|
246
|
+
- chart2.rb
|
247
|
+
- chart3.rb
|
248
|
+
- chart4.rb
|
244
249
|
- cw.gemspec
|
250
|
+
- data/callsign/callsign.yaml
|
251
|
+
- data/code/code.yaml
|
245
252
|
- data/text/abbreviations.txt
|
246
253
|
- data/text/book.txt
|
247
254
|
- data/text/book_to_read.txt
|
@@ -256,6 +263,7 @@ files:
|
|
256
263
|
- lib/cw/audio_player.rb
|
257
264
|
- lib/cw/book.rb
|
258
265
|
- lib/cw/book_details.rb
|
266
|
+
- lib/cw/callsign.rb
|
259
267
|
- lib/cw/cl.rb
|
260
268
|
- lib/cw/common_words.rb
|
261
269
|
- lib/cw/config.rb
|
@@ -274,6 +282,7 @@ files:
|
|
274
282
|
- lib/cw/process.rb
|
275
283
|
- lib/cw/progress.rb
|
276
284
|
- lib/cw/randomize.rb
|
285
|
+
- lib/cw/read.rb
|
277
286
|
- lib/cw/repeat_word.rb
|
278
287
|
- lib/cw/reveal.rb
|
279
288
|
- lib/cw/rss.rb
|