cw 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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