mac-say 0.2.1 → 0.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e6eda8a2384074e1bb34ecd7a88da75657720e9a
4
- data.tar.gz: fcc81dc4096ee88460cba904653218b4b0e0e916
2
+ SHA256:
3
+ metadata.gz: 7fbd8952d1388b8784f78db4baf677ccb88da4219377fd2b268a0d843b3cb04a
4
+ data.tar.gz: f0e497209c8b6f9b5e3e29d3b2adcab49c5376e2a6c9613375dbe66dd0aa1af6
5
5
  SHA512:
6
- metadata.gz: fdf2b718734f76ef1c4918d1ad2858e0022e61dea79abe39bb38bb65f5ef8c234c5adc0cdf86d238b4b10a0732acbb76f7ad52a327c7cd32636beaa800daa957
7
- data.tar.gz: e11e7500d77c929c337caaa97bcd14d147de4e847f3e971bf1bc62b055fbe09bd94daefeba54bf923976a74dc28547c0627307e12139d348e26f9f23c1ac273b
6
+ metadata.gz: efac1b9b152281063b8540cab4d88e7561f405a3edf560409b808b061f0b410fe6bad88b3db857bb6eff83b070a0280d1220e6920e9852e6f26fb3a4881d36ca
7
+ data.tar.gz: 4de62bb491c7bb0fdd6c8311b5d7cf2d905a78c0fe0a1479ee3a7d32e8926028960e1714a191e7c5d6b8a8a63f406a4d526f2bf41e27bbdacf93a365daf590cb
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2017 Serge Bedzhyk
1
+ Copyright (c) 2022 Serge Bedzhyk
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -203,17 +203,21 @@ rescue Mac::Say::UnknownVoiceAttribute => e
203
203
  end
204
204
  ```
205
205
 
206
- ## Installing & Updating MacOS TTS Voices
206
+ ## Installing & Updating MacOS TTS Voices (MacOS 12.2+)
207
207
 
208
- Open `System Preferences` using Spotlight / Alfred / Dock and follow text or visual instructions:
208
+ Open `System Preferences` using  Menu / Spotlight / Alfred / Dock and follow text or visual instructions:
209
209
 
210
210
  ```
211
- System Preferences → Accessibility → Speech → System Voice →
211
+ System Preferences → Accessibility → Spoken Content → System Voice →
212
212
  → Customize… → (select voices) → OK → (Wait for download…)
213
213
  ```
214
214
 
215
215
  ![Installing & Updating MacOS TTS Voices](./img/voices_manual.png)
216
216
 
217
+ ## Caveats
218
+
219
+ - All the `Siri...` voices you might see in the system voices list are not available in `say`, that's why you can not user them
220
+
217
221
  ## Dev Notes
218
222
 
219
223
  ```sh
@@ -239,8 +243,17 @@ $ bundle exec m
239
243
  $ bundle exec m ./test/test_mac-say.rb:34
240
244
  ```
241
245
 
246
+ __Additionally to update dependencies I use my [one-liner](https://gist.github.com/smileart/9d1d17e9da8cba19f792304fd4b0e58d).__
247
+
248
+ ```
249
+ # A snippet to look for any new/unknown voices and test their attributes
250
+ pp Mac::Say.voices.select {|v| v[:gender].nil? }
251
+ talker = Mac::Say.new(voice: :rishi)
252
+ talker.say string: 'Hello, my name is Rishi. I am an Indian-English voice.'
253
+ ```
254
+
242
255
  ## Copyright
243
256
 
244
- Copyright (c) 2017 Serge Bedzhyk
257
+ Copyright (c) 2022 Serge Bedzhyk
245
258
 
246
259
  See [LICENSE.txt](./LICENSE.txt) for details.
Binary file
@@ -6,6 +6,6 @@ module Mac
6
6
  # Allows to use simple TTS on Mac right from Ruby scripts
7
7
  class Say
8
8
  # mac-say version
9
- VERSION = '0.2.1'
9
+ VERSION = '0.2.2'
10
10
  end
11
11
  end
@@ -3,9 +3,10 @@
3
3
  #
4
4
  # @note Unfortunately information in system *.plist files
5
5
  # e.g. /System/Library/Speech/Voices/<VoiceName>.SpeechVoice/Contents/Info.plist"
6
- # is inconsistent, fragmentary and sometimes incorrect, but:
6
+ # is inconsistent, fragmentary and sometimes incorrect, but also keep in mind:
7
7
  #
8
8
  # WARNING: all the attributes values provided here are highly subjective!!!
9
+ #
9
10
  ADDITIONAL_VOICE_ATTRIBUTES = {
10
11
  _unknown_voice: {
11
12
  gender: nil,
@@ -409,6 +410,12 @@ ADDITIONAL_VOICE_ATTRIBUTES = {
409
410
  quality: :medium,
410
411
  singing: false
411
412
  },
413
+ neel: {
414
+ gender: :male,
415
+ joke: false,
416
+ quality: :medium,
417
+ singing: false
418
+ },
412
419
  nicolas: {
413
420
  gender: :male,
414
421
  joke: false,
@@ -481,6 +488,12 @@ ADDITIONAL_VOICE_ATTRIBUTES = {
481
488
  quality: :low,
482
489
  singing: false
483
490
  },
491
+ rishi: {
492
+ gender: :male,
493
+ joke: false,
494
+ quality: :low,
495
+ singing: false
496
+ },
484
497
  samantha: {
485
498
  gender: :female,
486
499
  joke: false,
data/mac-say.gemspec CHANGED
@@ -30,16 +30,16 @@ Gem::Specification.new do |gem|
30
30
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
31
31
  gem.require_paths = ['lib']
32
32
 
33
- gem.add_development_dependency 'bundler', '~> 1.10'
34
- gem.add_development_dependency 'minitest', '~> 5.0'
35
- gem.add_development_dependency 'minitest-reporters', '~> 1.1'
36
- gem.add_development_dependency 'rake', '~> 12.0'
37
- gem.add_development_dependency 'simplecov', '~> 0.12'
33
+ gem.add_development_dependency 'bundler', '~> 2.3'
34
+ gem.add_development_dependency 'minitest', '~> 5.15'
35
+ gem.add_development_dependency 'minitest-reporters', '~> 1.5'
36
+ gem.add_development_dependency 'rake', '~> 13.0'
37
+ gem.add_development_dependency 'simplecov', '~> 0.16'
38
38
  gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
39
- gem.add_development_dependency 'yard', '~> 0.8.7.5'
40
- gem.add_development_dependency 'inch', '~> 0.7.1'
41
- gem.add_development_dependency 'redcarpet', '~> 3.4'
42
- gem.add_development_dependency 'github-markup', '~> 1.4'
43
- gem.add_development_dependency 'm', '~> 1.5'
44
- gem.add_development_dependency 'coveralls', '~> 0.8'
39
+ gem.add_development_dependency 'yard', '~> 0.9'
40
+ gem.add_development_dependency 'inch', '~> 0.8'
41
+ gem.add_development_dependency 'redcarpet', '~> 3.5'
42
+ gem.add_development_dependency 'github-markup', '~> 4.0'
43
+ gem.add_development_dependency 'm', '~> 1.6'
44
+ gem.add_development_dependency 'coveralls', '~> 0.8.23'
45
45
  end
data/test/test_mac-say.rb CHANGED
@@ -10,19 +10,19 @@ describe 'Mac::Say as a macOS `say` wrapper' do
10
10
  end
11
11
 
12
12
  it 'must have a VERSION constant' do
13
- Mac::Say.const_get('VERSION').wont_be_empty
13
+ _(Mac::Say.const_get('VERSION')).wont_be_empty
14
14
  end
15
15
 
16
16
  it 'must return available voices as an Array of Hashes' do
17
- Mac::Say.voices.wont_be_empty
18
- Mac::Say.voices.must_be_kind_of Array
17
+ _(Mac::Say.voices).wont_be_empty
18
+ _(Mac::Say.voices).must_be_kind_of Array
19
19
  end
20
20
 
21
21
  it 'must return specific Hash structure for a voice' do
22
22
  voice = Mac::Say.voice(:name, :alex)
23
- voice.wont_be_empty
24
- voice.must_be_kind_of Hash
25
- voice.keys.must_equal Mac::Say::VOICE_ATTRIBUTES
23
+ _(voice).wont_be_empty
24
+ _(voice).must_be_kind_of Hash
25
+ _(voice.keys).must_equal Mac::Say::VOICE_ATTRIBUTES
26
26
  end
27
27
 
28
28
  it 'must return additional attributes for known voices' do
@@ -30,52 +30,52 @@ describe 'Mac::Say as a macOS `say` wrapper' do
30
30
  voice = Mac::Say.voice(:name, voice_name)
31
31
  additional_voice_attributes = ADDITIONAL_VOICE_ATTRIBUTES[voice_name]
32
32
 
33
- voice[:gender].must_equal additional_voice_attributes[:gender]
34
- voice[:joke].must_equal additional_voice_attributes[:joke]
35
- voice[:quality].must_equal additional_voice_attributes[:quality]
33
+ _(voice[:gender]).must_equal additional_voice_attributes[:gender]
34
+ _(voice[:joke]).must_equal additional_voice_attributes[:joke]
35
+ _(voice[:quality]).must_equal additional_voice_attributes[:quality]
36
36
  end
37
37
 
38
38
  it '.voice must search for a voice using single attribute' do
39
39
  voice = Mac::Say.voice(:name, :alex)
40
- voice[:name].must_equal :alex
40
+ _(voice[:name]).must_equal :alex
41
41
  end
42
42
 
43
43
  it '.voice must search for a voice using block given' do
44
44
  voices = Mac::Say.voice {|voice| voice[:language] == :en && voice[:joke] == false }
45
- voices.must_be_kind_of Array
45
+ _(voices).must_be_kind_of Array
46
46
  end
47
47
 
48
48
  it '.voice must return one voice as a Hash' do
49
49
  voice = Mac::Say.voice(:name, :alex)
50
- voice.must_be_kind_of Hash
50
+ _(voice).must_be_kind_of Hash
51
51
  end
52
52
 
53
53
  # For this test to pass you'd have to have more than
54
54
  # one British voice on your machine!
55
55
  it '.voice must return an Array of voices if > 1' do
56
56
  voices = Mac::Say.voice(:country, :gb)
57
- voices.must_be_kind_of Array
57
+ _(voices).must_be_kind_of Array
58
58
  end
59
59
 
60
60
  it ".voice must return nil if voice wasn't found" do
61
61
  voices = Mac::Say.voice(:name, :xxx)
62
- voices.must_be_nil
62
+ _(voices).must_be_nil
63
63
  end
64
64
 
65
65
 
66
66
  it '.say must return 0 in successive speech' do
67
67
  expectation = ["#{@say_path} -v 'alex' -r 175", 0]
68
- Mac::Say.say('42').must_equal expectation
68
+ _(Mac::Say.say('42')).must_equal expectation
69
69
  end
70
70
 
71
71
  it '.say must use custom voice' do
72
72
  expectation = ["#{@say_path} -v 'alex' -r 175", 0]
73
- Mac::Say.say('42', :alex).must_equal expectation
73
+ _(Mac::Say.say('42', :alex)).must_equal expectation
74
74
  end
75
75
 
76
76
  it '.say must work with multiple lines' do
77
77
  expectation = ["#{@say_path} -v 'alex' -r 175", 0]
78
- Mac::Say.say(<<-TEXT, :alex).must_equal expectation
78
+ _(Mac::Say.say(<<-TEXT, :alex)).must_equal expectation
79
79
  1
80
80
  2
81
81
  3
@@ -83,13 +83,13 @@ describe 'Mac::Say as a macOS `say` wrapper' do
83
83
  end
84
84
 
85
85
  it '.say must fail on wrong voice' do
86
- -> {
86
+ _{
87
87
  Mac::Say.say 'OMG! I lost my voice!', :wrong
88
88
  }.must_raise Mac::Say::VoiceNotFound
89
89
  end
90
90
 
91
91
  it '.voice must fail on wrong voice attribute' do
92
- -> {
92
+ _{
93
93
  Mac::Say.voice(:tone, :enthusiastic)
94
94
  }.must_raise Mac::Say::UnknownVoiceAttribute
95
95
  end
@@ -102,24 +102,24 @@ describe 'Mac::Say as a macOS `say` wrapper' do
102
102
  end
103
103
 
104
104
  it 'must instantiate Mac::Say' do
105
- @reader.must_be_instance_of Mac::Say
105
+ _(@reader).must_be_instance_of Mac::Say
106
106
  end
107
107
 
108
108
  it '#say must return 0 on successive speech' do
109
109
  expectation = ["#{@say_path} -v 'alex' -r 175", 0]
110
- @reader.say(string: '42').must_equal expectation
110
+ _(@reader.say(string: '42')).must_equal expectation
111
111
  end
112
112
 
113
113
  it '#read must be a synonym of #say' do
114
114
  expectation = ["#{@say_path} -v 'alex' -r 175", 0]
115
- @reader.read(string: '42').must_equal expectation
115
+ _(@reader.read(string: '42')).must_equal expectation
116
116
  end
117
117
 
118
118
  it '#say must support :file' do
119
119
  absolute_path = File.absolute_path './fixtures/text/en_gb_test.txt', File.dirname(__FILE__)
120
120
  expectation = ["#{@say_path} -f #{absolute_path} -v 'alex' -r 175", 0]
121
121
 
122
- @reader.say(file: absolute_path).must_equal expectation
122
+ _(@reader.say(file: absolute_path)).must_equal expectation
123
123
  end
124
124
 
125
125
  it '#say must read :file from initial config' do
@@ -127,17 +127,16 @@ describe 'Mac::Say as a macOS `say` wrapper' do
127
127
  expectation = ["#{@say_path} -f #{absolute_path} -v 'alex' -r 175", 0]
128
128
 
129
129
  @reader = Mac::Say.new(file: absolute_path)
130
- @reader.say.must_equal expectation
130
+ _(@reader.say).must_equal expectation
131
131
  end
132
132
 
133
133
  it 'must return nil additional attrs for unknown voices' do
134
134
  if ENV['USE_FAKE_SAY']
135
135
  voice = @reader.voice(:name, :test)
136
- additional_voice_attributes = ADDITIONAL_VOICE_ATTRIBUTES[:test]
137
136
 
138
- voice[:gender].must_be_nil
139
- voice[:joke].must_be_nil
140
- voice[:quality].must_be_nil
137
+ _(voice[:gender]).must_be_nil
138
+ _(voice[:joke]).must_be_nil
139
+ _(voice[:quality]).must_be_nil
141
140
  end
142
141
  end
143
142
 
@@ -149,90 +148,90 @@ describe 'Mac::Say as a macOS `say` wrapper' do
149
148
 
150
149
  # init
151
150
  @reader = Mac::Say.new(file: gb_absolute_path)
152
- @reader.config[:file].must_equal gb_absolute_path
151
+ _(@reader.config[:file]).must_equal gb_absolute_path
153
152
 
154
153
  # change
155
- @reader.say(file: us_absolute_path).must_equal expectation
156
- @reader.config[:file].must_equal us_absolute_path
154
+ _(@reader.say(file: us_absolute_path)).must_equal expectation
155
+ _(@reader.config[:file]).must_equal us_absolute_path
157
156
  end
158
157
 
159
158
  it '#say must prioritise :file over :string' do
160
159
  absolute_path = File.absolute_path './fixtures/text/en_gb_test.txt', File.dirname(__FILE__)
161
160
  expectation = ["#{@say_path} -f #{absolute_path} -v 'alex' -r 175", 0]
162
161
 
163
- @reader.say(string: 'test', file: absolute_path).must_equal expectation
162
+ _(@reader.say(string: 'test', file: absolute_path)).must_equal expectation
164
163
  end
165
164
 
166
165
  it '#say must support custom :rate' do
167
166
  expectation = ["#{@say_path} -v 'alex' -r 250", 0]
168
- @reader.say(string: '42', rate: 250).must_equal expectation
167
+ _(@reader.say(string: '42', rate: 250)).must_equal expectation
169
168
  end
170
169
 
171
170
  it '#say must support custom :voice' do
172
171
  expectation = ["#{@say_path} -v 'fiona' -r 175", 0]
173
- @reader.say(string: '42', voice: :fiona).must_equal expectation
172
+ _(@reader.say(string: '42', voice: :fiona)).must_equal expectation
174
173
  end
175
174
 
176
175
  it '#say must change the :voice' do
177
176
  expectation = ["#{@say_path} -v 'fiona' -r 175", 0]
178
- @reader.config[:voice].must_equal :alex
177
+ _(@reader.config[:voice]).must_equal :alex
179
178
 
180
- @reader.say(string: '42', voice: :fiona).must_equal expectation
181
- @reader.config[:voice].must_equal :fiona
179
+ _(@reader.say(string: '42', voice: :fiona)).must_equal expectation
180
+ _(@reader.config[:voice]).must_equal :fiona
182
181
 
183
- @reader.say(string: '13').must_equal expectation
182
+ _(@reader.say(string: '13')).must_equal expectation
184
183
  end
185
184
 
186
185
  it '#say must change the :rate' do
187
186
  expectation = ["#{@say_path} -v 'alex' -r 300", 0]
188
- @reader.config[:rate].must_equal 175
187
+ _(@reader.config[:rate]).must_equal 175
189
188
 
190
- @reader.say(string: '42', rate: 300).must_equal expectation
191
- @reader.config[:rate].must_equal 300
189
+ _(@reader.say(string: '42', rate: 300)).must_equal expectation
190
+ _(@reader.config[:rate]).must_equal 300
192
191
 
193
- @reader.say(string: '13').must_equal expectation
192
+ _(@reader.say(string: '13')).must_equal expectation
194
193
  end
195
194
 
196
195
  it '#say must fail on wrong initial voice' do
197
- -> {
196
+ _{
198
197
  talker = Mac::Say.new(voice: :wrong)
199
198
  talker.say string: 'OMG! I lost my voice!'
200
199
  }.must_raise Mac::Say::VoiceNotFound
201
200
  end
202
201
 
203
202
  it '#say must fail on wrong dynamic voice' do
204
- -> {
203
+ _{
205
204
  talker = Mac::Say.new
206
205
  talker.say string: 'OMG! I lost my voice!', voice: :wrong
207
206
  }.must_raise Mac::Say::VoiceNotFound
208
207
  end
209
208
 
210
209
  it '#voice must fail on wrong say path' do
211
- -> {
210
+ _{
212
211
  Mac::Say.new(say_path: '/wrong/wrong/path').voice(:name, :alex)
213
212
  }.must_raise Mac::Say::CommandNotFound
214
213
  end
215
214
 
216
215
  it '#say must fail on wrong say path' do
217
- -> {
216
+ _{
218
217
  Mac::Say.new(say_path: '/wrong/wrong/path').say 'test'
219
218
  }.must_raise Mac::Say::CommandNotFound
220
219
  end
221
220
 
222
221
  it '#say must fail on wrong file path' do
223
- -> {
222
+ _{
224
223
  Mac::Say.new.say(file: '/wrong/wrong/path')
225
224
  }.must_raise Mac::Say::FileNotFound
226
225
  end
227
226
 
228
227
  it '#voice must fail on wrong attribute' do
229
- -> {
228
+ _{
230
229
  Mac::Say.new.voice(:articulation, :nostalgic)
231
230
  }.must_raise Mac::Say::UnknownVoiceAttribute
232
231
  end
233
232
 
234
233
  it '#say must fail on initial wrong file path' do
235
- -> {
234
+ _{
236
235
  Mac::Say.new(file: '/wrong/wrong/path').say
237
236
  }.must_raise Mac::Say::FileNotFound
238
237
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mac-say
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serge Bedzhyk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-10 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,70 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.10'
19
+ version: '2.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.10'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.0'
33
+ version: '5.15'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '5.0'
40
+ version: '5.15'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest-reporters
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.1'
47
+ version: '1.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.1'
54
+ version: '1.5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '12.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '12.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.12'
75
+ version: '0.16'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.12'
82
+ version: '0.16'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubygems-tasks
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,84 +100,84 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.8.7.5
103
+ version: '0.9'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.8.7.5
110
+ version: '0.9'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: inch
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.7.1
117
+ version: '0.8'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.7.1
124
+ version: '0.8'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: redcarpet
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.4'
131
+ version: '3.5'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.4'
138
+ version: '3.5'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: github-markup
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '1.4'
145
+ version: '4.0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '1.4'
152
+ version: '4.0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: m
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '1.5'
159
+ version: '1.6'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '1.5'
166
+ version: '1.6'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: coveralls
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0.8'
173
+ version: 0.8.23
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0.8'
180
+ version: 0.8.23
181
181
  description: Ruby wrapper around the modern version of the macOS `say` command. Inspired
182
182
  by the @bratta's mactts
183
183
  email: smileart21@gmail.com
@@ -229,8 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
229
  - !ruby/object:Gem::Version
230
230
  version: '0'
231
231
  requirements: []
232
- rubyforge_project:
233
- rubygems_version: 2.6.11
232
+ rubygems_version: 3.1.4
234
233
  signing_key:
235
234
  specification_version: 4
236
235
  summary: Ruby wrapper around the macOS `say` command