mac-say 0.2.1 → 0.2.2

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