cw 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -8
  3. data/README.md +25 -17
  4. data/cw.gemspec +12 -1
  5. data/test/test_cw.rb +106 -116
  6. metadata +128 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 510af3ccb73cc14f18cb494a0f4c794d4b9ff730
4
- data.tar.gz: 228dd1eeb2d9c85325fdcb417a3a5e649bab4618
3
+ metadata.gz: 989e1bb7fa13915779b903aaefd8167e0afda345
4
+ data.tar.gz: 8e473d0a5adfec8808ba0d2fd4255dc4cbc22df1
5
5
  SHA512:
6
- metadata.gz: 4b70df1d2f3102eee3d8a084599d483b35e34bce6c0a8fa68a74418ec06f16c0e37e0096950445a9a0597c79f4cba53f3d437c034fbdce078fc58aa87eb897a0
7
- data.tar.gz: bfa85117733d22a8a9627398676522d7195069fc6b445a3de6f0c4f2e9de9bb76f6cf9897cb6745986d9d4cb2b41ffbd8e6067c17664bfc270cb1ff8e1fbc2a9
6
+ metadata.gz: fa0bbd224e8b08c6b67241df869fc41b3b8f857c8b9baf4d337007d56acfaacd31f73f7def2434f8f1b56acb922989aaebba7461814cb3fed3b97472ceea8407
7
+ data.tar.gz: b2c18e86a87c71948a0d9aa0e416f7c935cbe0c0113374afe871c20034c1b5c4549f182ef8c9bd283f44679a2f98090bc4ca4c22cb3f5cf5b6b0db6e04a0b137
data/Gemfile CHANGED
@@ -1,11 +1,4 @@
1
1
  # CW Gemfile
2
2
 
3
3
  source "https://rubygems.org"
4
-
5
- gem 'wavefile'
6
- gem 'paint'
7
- gem 'feedjira'
8
- gem 'htmlentities'
9
- gem 'sanitize'
10
- gem 'ruby-progressbar'
11
- gem 'rake'
4
+ gemspec
data/README.md CHANGED
@@ -18,8 +18,16 @@ gem install cw
18
18
  ruby example.rb
19
19
 
20
20
  ```
21
+ # Run tests
21
22
 
22
- - Note: Currently only tested on OS X (uses afplay by default).
23
+ ```sh
24
+
25
+ gem install --dev cw
26
+ ruby test/test_cw.rb
27
+
28
+ ```
29
+
30
+ - Note: Currently only tested on OS X, and Ruby v2.0.0 and greater.
23
31
 
24
32
  ```ruby
25
33
 
@@ -68,22 +76,22 @@ ruby example.rb
68
76
 
69
77
  Command / Alias
70
78
  ---------------
71
- - ewpm / effective_wpm
72
- - no_run / pause
73
- - comment / name
74
- - repeat_word / double_words
75
- - word_length / word_size
76
- - word_shuffle / shuffle
77
- - random_letters
78
- - random_numbers
79
- - having_size_of / word_size
80
- - number_of_words / word_count
81
- - words_including / including
82
- - words_ending_with / ending_with
83
- - random_alphanumeric / random_letters_numbers
84
- - words_beginning_with / beginning_with
85
- - words_no_longer_than / no_longer_than
86
- - words_no_shorter_than / no_shorter_than
79
+ - ewpm / effective_wpm
80
+ - no_run / pause
81
+ - comment / name
82
+ - repeat_word / double_words
83
+ - word_length / word_size
84
+ - word_shuffle / shuffle
85
+ - random_letters
86
+ - random_numbers
87
+ - having_size_of / word_size
88
+ - number_of_words / word_count
89
+ - words_including / including
90
+ - words_ending_with / ending_with
91
+ - random_alphanumeric / random_letters_numbers
92
+ - words_beginning_with / beginning_with
93
+ - words_no_longer_than / no_longer_than
94
+ - words_no_shorter_than / no_shorter_than
87
95
 
88
96
  # License
89
97
 
data/cw.gemspec CHANGED
@@ -4,7 +4,7 @@ $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 = '0.0.10'
7
+ spec.version = '0.0.11'
8
8
  spec.date = '2016-05-21'
9
9
  spec.authors = ["Martyn Jago"]
10
10
  spec.email = ["martyn.jago@btinternet.com"]
@@ -14,4 +14,15 @@ Gem::Specification.new do |spec|
14
14
  spec.files = `git ls-files`.split($/)
15
15
  spec.license = 'MIT'
16
16
  spec.require_paths = ["lib", "audio", "data/text", "test"]
17
+
18
+ spec.add_dependency('wavefile')
19
+ spec.add_dependency('paint')
20
+ spec.add_dependency('feedjira')
21
+ spec.add_dependency('htmlentities')
22
+ spec.add_dependency('sanitize')
23
+ spec.add_dependency('ruby-progressbar')
24
+ spec.add_dependency('rake')
25
+
26
+ spec.add_development_dependency "minitest"
27
+ spec.add_development_dependency "simplecov"
17
28
  end
data/test/test_cw.rb CHANGED
@@ -30,12 +30,12 @@ class TestCW < MiniTest::Test
30
30
 
31
31
  def test_name_is_unnamed_if_unnamed
32
32
  assert_equal 'unnamed', @cw.name
33
- end
33
+ end
34
34
 
35
35
  def test_name_can_be_set
36
36
  @cw.name 'testing'
37
37
  assert_equal 'testing', @cw.name
38
- end
38
+ end
39
39
 
40
40
  def test_loads_words_by_default
41
41
  assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
@@ -47,7 +47,7 @@ class TestCW < MiniTest::Test
47
47
  pause
48
48
  temp = Params.dictionary
49
49
  }
50
- assert_equal File.expand_path(ROOT + '/txt/common_words.txt'), File.expand_path(temp)
50
+ assert_equal File.expand_path(ROOT + '/data/text/common_words.txt'), File.expand_path(temp)
51
51
  end
52
52
 
53
53
  def test_CW_takes_a_block
@@ -85,9 +85,9 @@ class TestCW < MiniTest::Test
85
85
  temp = nil
86
86
  cw = CW.new {
87
87
  no_run
88
- temp = Params.mp3_filename
88
+ temp = Params.audio_filename
89
89
  }
90
- assert_equal "mp3_output", temp
90
+ assert_equal "audio_output.wav", temp
91
91
  end
92
92
 
93
93
  def test_reload_reloads_dictionary
@@ -131,19 +131,18 @@ class TestCW < MiniTest::Test
131
131
  assert_equal ["the", "of", "and", "a", "to"] , @cw.words.first(5)
132
132
  end
133
133
 
134
- def test_to_s_outputs_test_run_header_if_paused
135
- temp = %q(
136
- unnamed
134
+ def test_to_s_outputs_test_run_header_if_paused
135
+ temp =
136
+ %q(unnamed
137
137
  =======
138
138
  WPM: 25
139
- =======
140
- )
141
- assert_equal temp, @cw.to_s
142
- end
139
+ =======)
140
+ assert_equal temp, @cw.to_s
141
+ end
143
142
 
144
143
  def test_to_s_outputs_relevant_params_if_set
145
- temp = %q(
146
- unnamed
144
+ temp =
145
+ %q(unnamed
147
146
  =======
148
147
  WPM: 25
149
148
  Shuffle: yes
@@ -151,14 +150,13 @@ Word count: 2
151
150
  Word size: 3
152
151
  Beginning: l
153
152
  Ending: x
154
- =======
155
- )
153
+ =======)
156
154
  @cw.shuffle
157
155
  @cw.word_count 2
158
156
  @cw.word_size 3
159
157
  @cw.ending_with('x')
160
158
  @cw.beginning_with('l')
161
- assert_equal temp, @cw.to_s
159
+ assert_equal temp, @cw.to_s.strip()
162
160
  end
163
161
 
164
162
  def test_wpm_defaults_to_25_if_unset
@@ -201,7 +199,7 @@ Ending: x
201
199
  @cw.word_size 2
202
200
  assert_equal ["of", "to", "in", "is", "it"] , @cw.words.first(5)
203
201
  end
204
-
202
+
205
203
  def test_beginning_with_returns_words_beginning_with_letter
206
204
  @cw.beginning_with 'l'
207
205
  assert_equal ["like", "look", "long", "little", "large"] , @cw.words.first(5)
@@ -249,13 +247,13 @@ Ending: x
249
247
  assert_equal ["that", "with", "they", "this", "have"] , @cw.words.first(5)
250
248
  end
251
249
 
252
- def test_assign_words_converts_space_seperated_string_to_array
253
- @cw.assign_words "one two\nthree \tfour"
254
- assert_equal ["one", "two", "three", "four"] , @cw.words
250
+ def test_words_fn_adds_words
251
+ @cw.words = "one two three four"
252
+ assert_equal "one two three four", @cw.words
255
253
  end
256
254
 
257
- def test_assign_words_passes_in_an_array_of_words_as_is
258
- @cw.assign_words ["one", "two", "three", "four"]
255
+ def test_words_fn_passes_in_an_array_of_words_as_is
256
+ @cw.words = ["one", "two", "three", "four"]
259
257
  assert_equal ["one", "two", "three", "four"] , @cw.words
260
258
  end
261
259
 
@@ -296,10 +294,10 @@ Ending: x
296
294
  @cw.words.each { |w| assert_equal 4, w.length}
297
295
  end
298
296
 
299
- # def test_random_numbers_returns_random_numbers
300
- # @cw.random_numbers
301
- # @cw.words.each { |w| assert_match /\A[-+]?\d+\z/ , w }
302
- # end
297
+ def test_random_numbers_returns_random_numbers
298
+ @cw.random_numbers
299
+ @cw.words.each { |w| assert_match /\A[-+]?\d+\z/ , w }
300
+ end
303
301
 
304
302
  def test_random_letters_numbers_can_take_size_and_count_option
305
303
  @cw.random_letters_numbers(count: 3, size: 4)
@@ -321,45 +319,38 @@ Ending: x
321
319
 
322
320
  def test_alphabet_generates_alphabet
323
321
  @cw.alphabet
324
- assert_equal ["abcdefghijklmnopqrstuvwxyz"], @cw.words
322
+ assert_equal ["a b c d e f g h i j k l m n o p q r s t u v w x y z"], @cw.words
325
323
  end
326
324
 
327
325
  def test_alphabet_generates_reversed_alphabet
328
326
  @cw.alphabet(reverse: true)
329
- assert_equal ['zyxwvutsrqponmlkjihgfedcba'], @cw.words
327
+ assert_equal ['z y x w v u t s r q p o n m l k j i h g f e d c b a'], @cw.words
330
328
  end
331
329
 
332
330
  def test_alphabet_shuffles_alphabet
333
331
  @cw.alphabet(shuffle: true)
334
- refute_equal ["abcdefghijklmnopqrstuvwxyz"], @cw.words
335
- assert_equal "abcdefghijklmnopqrstuvwxyz", @cw.words.first.chars.sort.join
332
+ refute_equal ["a b c d e f g h i j k l m n o p q r s t u v w x y z"], @cw.words
333
+ assert_equal "abcdefghijklmnopqrstuvwxyz", @cw.words.first.chars.sort.join.strip
336
334
  end
337
335
 
338
336
  def test_reverse_reverses_words
339
- @cw.assign_words ['first', 'then', 'last']
337
+ @cw.words = 'first then last'
340
338
  @cw.reverse
341
- assert_equal ['last', 'then', 'first'], @cw.words.first(4)
339
+ assert_equal 'tsal neht tsrif', @cw.words
342
340
  end
343
341
 
344
- def test_save_word_file_saves_word_file
345
- temp = Tempfile.new("saved.tmp")
346
- @cw.assign_words ['the', 'of', 'and', 'a']
347
- @cw.save_word_file(temp)
348
- assert_equal "the of and a", temp.read
349
- temp.close
350
- end
342
+ #todo
343
+ # def test_convert_generates_correct_command_for_default
344
+ # @cw.dry_run = true
345
+ # @cw.words = "some words"
346
+ # assert_equal "echo some words | ebook2cw -w 25 -o \"mp3_output\" ", @cw.convert
347
+ # end
351
348
 
352
- def test_convert_generates_correct_command_for_default
353
- @cw.dry_run = true
354
- @cw.assign_words "some words"
355
- assert_equal "echo some words | ebook2cw -w 25 -o \"mp3_output\" ", @cw.convert
356
- end
357
-
358
- def test_run_converts_and_plays
359
- @cw.dry_run = true
360
- @cw.assign_words "some words"
361
- assert_equal 'played', @cw.run
362
- end
349
+ # def test_run_converts_and_plays
350
+ # @cw.dry_run = true
351
+ # @cw.words = ["some", "words"]
352
+ # assert_equal 'played', @cw.run
353
+ # end
363
354
 
364
355
  def test_frequency_returns_frequency
365
356
  assert_equal 567, @cw.frequency(567)
@@ -367,19 +358,21 @@ Ending: x
367
358
  assert_equal 456, @cw.frequency
368
359
  end
369
360
 
370
- def test_play_builds_correct_command_for_default
371
- @cw.assign_words "some words"
372
- @cw.dry_run = true
373
- assert_equal "afplay mp3_output0000.mp3", @cw.play
374
- end
361
+ #todo
362
+ # def test_play_builds_correct_command_for_default
363
+ # @cw.words = "some words"
364
+ # @cw.dry_run = true
365
+ # assert_equal "afplay mp3_output0000.mp3", @cw.play
366
+ # end
375
367
 
376
- # def test_dot_ms_returns_correct_time_in_milliseconds
377
- # assert_in_delta(0.1, @cw.dot_ms(12), 0.001)
378
- # end
379
- #
380
- # def test_space_ms_returns_correct_time_in_milliseconds
381
- # assert_in_delta(0.3, @cw.space_ms(12), 0.001)
382
- # end
368
+ #todo
369
+ ## def test_dot_ms_returns_correct_time_in_milliseconds
370
+ ## assert_in_delta(0.1, @cw.dot_ms(12), 0.001)
371
+ ## end
372
+ ##
373
+ ## def test_space_ms_returns_correct_time_in_milliseconds
374
+ ## assert_in_delta(0.3, @cw.space_ms(12), 0.001)
375
+ ## end
383
376
 
384
377
  def test_method_aliases
385
378
  assert @cw.method(:word_length), @cw.method(:word_size)
@@ -396,132 +389,129 @@ Ending: x
396
389
  assert @cw.method(:no_run), @cw.method(:pause)
397
390
  end
398
391
 
399
- def test_build_command_line_sets_w_param
392
+ def test_set_wpm_param
400
393
  @cw.wpm 33
401
- assert @cw.build_cl.include?('-w 33 '), 'wpm param invalid'
394
+ assert @cw.cl.cl_wpm == '-w 33 ', 'wpm param invalid'
402
395
  end
403
396
 
404
- def test_build_build_cl_sets_e_param
397
+ def test_set_ewpm_param
405
398
  @cw.effective_wpm 33
406
- assert @cw.build_cl.include?('-e 33 '), 'effective_wpm param invalid'
399
+ assert @cw.cl.cl_effective_wpm == '-e 33 ', 'effective_wpm param invalid'
407
400
  end
408
401
 
409
- def test_build_build_cl_sets_W_param
402
+ def test_set_word_spacing_W_param
410
403
  @cw.word_spacing 2
411
- assert @cw.build_cl.include?('-W 2 '), 'word_spacing param invalid'
404
+ assert @cw.cl.cl_word_spacing == '-W 2 ', 'word_spacing param invalid'
412
405
  end
413
406
 
414
- def test_build_build_cl_sets_f_param
407
+ def test_set_freq_f_param
415
408
  @cw.frequency 800
416
- assert @cw.build_cl.include?('-f 800 '), 'frequency param invalid'
409
+ assert @cw.cl.cl_frequency == '-f 800 ', 'frequency param invalid'
417
410
  end
418
411
 
419
- def test_build_build_cl_sets_squarewave_param
412
+ def test_set_squarewave_param
420
413
  @cw.set_tone_type :squarewave
421
- assert @cw.build_cl.include?('-T 2 '), 'squarewave param invalid'
414
+ assert @cw.cl.cl_squarewave == '-T 2 ', 'squarewave param invalid'
422
415
  end
423
416
 
424
- def test_build_build_cl_sets_sawtooth_param
417
+ def test_set_sawtooth_param
425
418
  @cw.set_tone_type :sawtooth
426
- assert @cw.build_cl.include?('-T 1 '), 'sawtooth param invalid'
419
+ assert @cw.cl.cl_sawtooth == '-T 1 ', 'sawtooth param invalid'
427
420
  end
428
421
 
429
- def test_build_build_cl_sets_sinewave_param
422
+ def test_set_sinewave_param
430
423
  @cw.set_tone_type :sinewave
431
- assert @cw.build_cl.include?('-T 0 '), 'sinewave param invalid'
424
+ assert @cw.cl.cl_sinewave == '-T 0 ', 'sinewave param invalid'
432
425
  end
433
426
 
434
427
  def test_build_build_cl_ignores_invalid_tone_type
435
428
  @cw.set_tone_type :sinewave
436
429
  @cw.set_tone_type :invalid
437
- assert @cw.build_cl.include?('-T 0 '), 'not ignoring invalid tone type'
430
+ assert @cw.cl.cl_sinewave == '-T 0 ', 'not ignoring invalid tone type'
438
431
  end
439
432
 
440
- def test_build_build_cl_sets_author_param
433
+ def test_set_author_param
441
434
  @cw.author 'some author'
442
- assert @cw.build_cl.include?('-a "some author" '), 'author param invalid'
435
+ assert @cw.cl.cl_author == '-a "some author" ', 'author param invalid'
443
436
  end
444
437
 
445
- def test_build_build_cl_sets_title_param
438
+ def test_set_title_param
446
439
  @cw.title 'some title'
447
- assert @cw.build_cl.include?('-t "some title" '), 'title param invalid'
440
+ assert @cw.cl.cl_title == '-t "some title" ', 'title param invalid'
448
441
  end
449
442
 
450
- def test_build_build_cl_sets_N_param_in_noise_mode
443
+ def test_set_N_param_in_noise_mode
451
444
  @cw.noise
452
- assert @cw.build_cl.include?('-N 5 '), 'noise N param invalid'
445
+ assert @cw.cl.cl_noise.include?('-N 5 '), 'noise N param invalid'
453
446
  end
454
447
 
455
- def test_build_build_cl_sets_B_param_in_noise_mode
448
+ def test_set_B_param_in_noise_mode
456
449
  @cw.noise
457
- assert @cw.build_cl.include?('-B 1000 '), 'noise B param invalid'
450
+ assert @cw.cl.cl_noise.include?('-B 1000 '), 'noise B param invalid'
458
451
  end
459
452
 
460
- def test_build_build_cl_sets_default_mp3_filename
461
- assert @cw.build_cl.include?('-o "mp3_output" '), 'default mp3 filename invalid'
453
+ def test_set_default_filename
454
+ assert @cw.cl.cl_audio_filename.include?('audio_output.wav'), 'default audio output filename invalid'
462
455
  end
463
456
 
464
- def test_build_build_cl_sets_mp3_filename_to_given_name
465
- @cw.mp3_filename 'some name'
466
- assert @cw.build_cl.include?('-o "some name" '), 'default mp3 filename invalid'
457
+ def test_set_audio_filename_to_given_name
458
+ @cw.audio_filename('some name')
459
+ assert @cw.cl.cl_audio_filename.include?("some name"), 'default audio filename invalid'
467
460
  end
468
461
 
469
- # def test_build_build_cl_sets_mp3_filename_to_name_prefix
470
- # cl = Cl.new(mp3_filename: "some name")
471
- # cw = CW.new do
472
- # name 'some name'
473
- # no_run
474
- # end
475
- # assert cw.build_build_cl.include?('-o "some name" '), 'prefix mp3 filename invalid'
476
- # end
477
-
478
- def test_build_build_cl_sets_q_param_when_numeric_quality
462
+ def test_set_q_param_when_numeric_quality
479
463
  @cw.quality 5
480
- assert @cw.build_cl.include?('-q 5 '), 'mp3 quality invalid'
464
+ assert @cw.cl.cl_quality.include?('-q 5 '), 'audio quality invalid'
481
465
  end
482
466
 
483
- def test_build_build_cl_sets_low_quality
467
+ def test_set_low_quality
484
468
  @cw.quality :low
485
- assert @cw.build_cl.include?('-q 9 '), 'mp3 low quality invalid'
469
+ assert @cw.cl.cl_quality.include?('-q 9 '), 'audio low quality invalid'
486
470
  end
487
471
 
488
- def test_build_build_cl_sets_medium_quality
472
+ def test_set_medium_quality
489
473
  @cw.quality :medium
490
- assert @cw.build_cl.include?('-q 5 '), 'mp3 medium quality invalid'
474
+ assert @cw.cl.cl_quality.include?('-q 5 '), 'audio medium quality invalid'
491
475
  end
492
476
 
493
- def test_build_build_cl_sets_high_quality
477
+ def test_set_high_quality
494
478
  @cw.quality :high
495
- assert @cw.build_cl.include?('-q 1 '), 'mp3 high quality invalid'
479
+ assert @cw.cl.cl_quality.include?('-q 1 '), 'audio high quality invalid'
496
480
  end
497
481
 
498
482
  def test_build_command_includes_custom_commands_via_build_cl
499
483
  @cw.command_line '-x "some custom command"'
500
- assert @cw.build_cl.include?( '-x "some custom command"'), 'custom command invalid'
484
+ assert @cw.cl.cl_command_line.include?( '-x "some custom command"'), 'custom command invalid'
501
485
  end
502
486
 
503
487
  def test_cl_echo_returns_correct_string
504
488
  str = ''
505
489
  CW.new do
506
- str = @cl.cl_echo ['some','words']
490
+ str = @cl.cl_echo('some words')
507
491
  pause
508
492
  end
509
- assert_equal 'echo some words | ebook2cw -w 25 -o "mp3_output" ', str
493
+ assert str.include?('echo some words | ebook2cw -w 25')
510
494
  end
511
495
 
512
496
  def test_words_exist
513
497
  temp = nil
514
498
  CW.new do
515
- assign_words 'some words'
516
- temp = @words.exist?
499
+ words = 'some words added here'
500
+ temp = words
501
+ pause
502
+ end
503
+ assert_equal(4, temp.split.size)
504
+ CW.new do
505
+ @words.add 'a couple of words'
506
+ temp = words
517
507
  pause
518
508
  end
519
- assert temp, "Words#exist? should be true"
509
+ assert_equal(4, temp.split.size)
520
510
  CW.new do
521
511
  @words.add nil
522
- temp = @words.exist?
512
+ temp = words
523
513
  pause
524
514
  end
525
- refute temp, "Words#exist? should be nil"
515
+ assert_nil(temp)
526
516
  end
527
517
  end
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.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martyn Jago
@@ -9,7 +9,133 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-05-21 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: wavefile
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: paint
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: feedjira
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: htmlentities
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sanitize
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: ruby-progressbar
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: simplecov
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
13
139
  description: A ruby library to help learn and practice morse code
14
140
  email:
15
141
  - martyn.jago@btinternet.com