win32-sapi 0.1.5 → 0.1.6
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.
- data/CHANGES +6 -1
- data/Rakefile +20 -15
- data/lib/win32/sapi5.rb +188 -188
- data/test/test_win32_sapi5.rb +87 -85
- data/win32-sapi.gemspec +25 -25
- metadata +33 -8
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 0.1.6 - 17-Jan-2011
|
2
|
+
* Some Rakefile and gemspec updates.
|
3
|
+
* Two tests now skipped on Windows XP.
|
4
|
+
* Added windows-pr as a development dependency.
|
5
|
+
|
1
6
|
== 0.1.5 - 10-Aug-2009
|
2
7
|
* Changed license to Artistic 2.0.
|
3
8
|
* Some gemspec updates, including license and description.
|
@@ -23,4 +28,4 @@
|
|
23
28
|
* Made the CHANGES and README files rdoc friendly.
|
24
29
|
|
25
30
|
== 0.1.0 - 12-Oct-2004
|
26
|
-
* Initial release
|
31
|
+
* Initial release
|
data/Rakefile
CHANGED
@@ -1,26 +1,31 @@
|
|
1
1
|
require 'rake'
|
2
|
+
require 'rake/clean'
|
2
3
|
require 'rake/testtask'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
CLEAN.include('**/*.gem', '**/*.rbc')
|
6
|
+
|
7
|
+
namespace :gem do
|
8
|
+
desc "Create the win32-sapi gem"
|
9
|
+
task :create => [:clean] do
|
10
|
+
spec = eval(IO.read('win32-sapi.gemspec'))
|
11
|
+
Gem::Builder.new(spec).build
|
12
|
+
end
|
10
13
|
|
11
|
-
desc
|
12
|
-
task :
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
desc "Install the win32-sapi gem"
|
15
|
+
task :install => [:create] do
|
16
|
+
file = Dir["*.gem"].first
|
17
|
+
sh "gem install #{file}"
|
18
|
+
end
|
16
19
|
end
|
17
20
|
|
18
|
-
desc 'Run the example program'
|
21
|
+
desc 'Run the example win32-sapi program'
|
19
22
|
task :example do
|
20
|
-
|
23
|
+
ruby '-Ilib examples/example_sapi5.rb'
|
21
24
|
end
|
22
25
|
|
23
26
|
Rake::TestTask.new do |t|
|
24
|
-
|
25
|
-
|
27
|
+
t.warning = true
|
28
|
+
t.verbose = true
|
26
29
|
end
|
30
|
+
|
31
|
+
task :default => :test
|
data/lib/win32/sapi5.rb
CHANGED
@@ -3,194 +3,194 @@ require 'win32ole'
|
|
3
3
|
# The Win32 module serves as a namespace only.
|
4
4
|
module Win32
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
#--
|
7
|
+
# The values provided in the various initializers come from the Windows
|
8
|
+
# registry. Look in HKLM\Software\Classes\CLSID.
|
9
|
+
#++
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
11
|
+
# An abstract base class for the SAPI automation classes. You should not
|
12
|
+
# Win32::SAPI5 directly.
|
13
|
+
#
|
14
|
+
class SAPI5 < WIN32OLE
|
15
|
+
# The version of the win32-sapi library.
|
16
|
+
VERSION = '0.1.6'
|
17
|
+
end
|
18
|
+
|
19
|
+
# The SpAudioFormat automation object represents an audio format.
|
20
|
+
#
|
21
|
+
class SpAudioFormat < SAPI5
|
22
|
+
def initialize
|
23
|
+
super("{9EF96870-E160-4792-820D-48CF0649E4EC}")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# The SpCustomStream automation object supports the use of existing IStream
|
28
|
+
# objects in SAPI.
|
29
|
+
#
|
30
|
+
class SpCustomStream < SAPI5
|
31
|
+
def initialize
|
32
|
+
super("{8DBEF13F-1948-4aa8-8CF0-048EEBED95D8}")
|
33
|
+
end
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
36
|
+
# The SpFileStream automation object enables data streams to be read and
|
37
|
+
# written as files.
|
38
|
+
#
|
39
|
+
class SpFileStream < SAPI5
|
40
|
+
def initialize
|
41
|
+
super("{947812B3-2AE1-4644-BA86-9E90DED7EC91}")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# The SpInProcRecoContext automation object defines a recognition context.
|
46
|
+
# A recognition context is the primary means by which an application
|
47
|
+
# interacts with SAPI for speech recognition.
|
48
|
+
#
|
49
|
+
class SpInProcRecoContext < SAPI5
|
50
|
+
def initialize
|
51
|
+
super("{73AD6842-ACE0-45E8-A4DD-8795881A2C2A}")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# The SpInProcRecognizer automation object represents a speech recognition
|
56
|
+
# engine.
|
57
|
+
#
|
58
|
+
class SpInProcRecognizer < SAPI5
|
59
|
+
def initialize
|
60
|
+
super("{41B89B6B-9399-11D2-9623-00C04F8EE628}")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# The SpLexicon automation object provides access to lexicons. Lexicons
|
65
|
+
# contain information about words that can be recognized or spoken.
|
66
|
+
#
|
67
|
+
class SpLexicon < SAPI5
|
68
|
+
def initialize
|
69
|
+
super("{0655E396-25D0-11D3-9C26-00C04F8EF87C}")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# The SpMemoryStream automation object supports audio stream operations in
|
74
|
+
# memory.
|
75
|
+
#
|
76
|
+
class SpMemoryStream < SAPI5
|
77
|
+
def initialize
|
78
|
+
super("{5FB7EF7D-DFF4-468a-B6B7-2FCBD188F994}")
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# The SpMMAudioIn automation object supports audio implementation for
|
83
|
+
# the standard Windows wave-in multimedia layer.
|
84
|
+
#
|
85
|
+
class SpMMAudioIn < SAPI5
|
86
|
+
def initialize
|
87
|
+
super("{CF3D2E50-53F2-11D2-960C-00C04F8EE628}")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# The SpMMAudioIn automation object supports audio implementation for
|
92
|
+
# the standard Windows wave-out multimedia layer.
|
93
|
+
#
|
94
|
+
class SpMMAudioOut < SAPI5
|
95
|
+
def initialize
|
96
|
+
super("{A8C680EB-3D32-11D2-9EE7-00C04F797396}")
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# The SpObjectToken automation object represents an available resource
|
101
|
+
# of a type used by SAPI.
|
102
|
+
#
|
103
|
+
class SpObjectToken < SAPI5
|
104
|
+
def initialize
|
105
|
+
super("{EF411752-3736-4CB4-9C8C-8EF4CCB58EFE}")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# The SpObjectTokenCategory automation object represents a class of object
|
110
|
+
# tokens. Object tokens are associated with specific folders in the Speech
|
111
|
+
# configuration database, and these folders are organized into categories,
|
112
|
+
# such as Recognizers, AudioInputs and Voices. An SpObjectTokenCategory
|
113
|
+
# object represents a single category of object tokens, and provides access
|
114
|
+
# to all the tokens within that category.
|
115
|
+
#
|
116
|
+
class SpObjectTokenCategory < SAPI5
|
117
|
+
def initialize
|
118
|
+
super("{A910187F-0C7A-45AC-92CC-59EDAFB77B53}")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# The SpPhoneConverter automation object supports conversion between
|
123
|
+
# phoneme symbols and phoneme IDs.
|
124
|
+
#
|
125
|
+
class SpPhoneConverter < SAPI5
|
126
|
+
def initialize
|
127
|
+
super("{9185F743-1143-4C28-86B5-BFF14F20E5C8}")
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# The SpPhraseInfoBuilder automation object provides the ability to
|
132
|
+
# rebuild phrase information from audio data saved to memory.
|
133
|
+
#
|
134
|
+
class SpPhraseInfoBuilder < SAPI5
|
135
|
+
def initialize
|
136
|
+
super("{C23FC28D-C55F-4720-8B32-91F73C2BD5D1}")
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# The SpSharedRecoContext automation object defines a recognition context.
|
141
|
+
#
|
142
|
+
class SpSharedRecoContext < SAPI5
|
143
|
+
def initialize
|
144
|
+
super("{47206204-5ECA-11D2-960F-00C04F8EE628}")
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# The SpSharedRecognizer automation object represents a speech recognition
|
149
|
+
# engine.
|
150
|
+
#
|
151
|
+
class SpSharedRecognizer < SAPI5
|
152
|
+
def initialize
|
153
|
+
super("{3BEE4890-4FE9-4A37-8C1E-5E7E12791C1F}")
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
# The SpTextSelectionInformation automation object provides access to the
|
158
|
+
# text selection information pertaining to a word sequence buffer.
|
159
|
+
#
|
160
|
+
class SpTextSelectionInformation < SAPI5
|
161
|
+
def initialize
|
162
|
+
super("{0F92030A-CBFD-4AB8-A164-FF5985547FF6}")
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# The SpUnCompressedLexicon automation object provides access to lexicons,
|
167
|
+
# which contain information about words that can be recognized or spoken.
|
168
|
+
#
|
169
|
+
class SpUnCompressedLexicon < SAPI5
|
170
|
+
def initialize
|
171
|
+
super("{C9E37C15-DF92-4727-85D6-72E5EEB6995A}")
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# The SpVoice object brings the text-to-speech (TTS) engine capabilities
|
176
|
+
# to applications using SAPI automation. An application can create numerous
|
177
|
+
# SpVoice objects, each independent of and capable of interacting with the
|
178
|
+
# others. An SpVoice object, usually referred to simply as a voice, is
|
179
|
+
# created with default property settings so that it is ready to speak
|
180
|
+
# immediately.
|
181
|
+
#
|
182
|
+
class SpVoice < SAPI5
|
183
|
+
def initialize
|
184
|
+
super("{96749377-3391-11D2-9EE3-00C04F797396}")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# The SpWaveFormatEx automation object represents the format of
|
189
|
+
# waveform-audio data.
|
190
|
+
#
|
191
|
+
class SpWaveFormatEx < SAPI5
|
192
|
+
def initialize
|
193
|
+
super("{C79A574C-63BE-44b9-801F-283F87F898BE}")
|
194
|
+
end
|
195
|
+
end
|
196
196
|
end
|
data/test/test_win32_sapi5.rb
CHANGED
@@ -10,94 +10,96 @@
|
|
10
10
|
#
|
11
11
|
# You should run this test case via the 'rake test' Rake task.
|
12
12
|
#############################################################################
|
13
|
+
require 'rubygems'
|
14
|
+
gem 'test-unit'
|
15
|
+
|
13
16
|
require 'win32/sapi5'
|
17
|
+
require 'windows/system_info'
|
14
18
|
require 'test/unit'
|
15
19
|
include Win32
|
16
20
|
|
17
21
|
class TC_Win32_SAPI5 < Test::Unit::TestCase
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
def teardown
|
102
|
-
end
|
22
|
+
include Windows::SystemInfo
|
23
|
+
|
24
|
+
def test_version
|
25
|
+
assert_equal('0.1.6', SAPI5::VERSION)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_SpAudioFormat
|
29
|
+
assert_nothing_raised{ SpAudioFormat.new }
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_SpCustomStream
|
33
|
+
assert_nothing_raised{ SpCustomStream.new }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_SpFileStream
|
37
|
+
assert_nothing_raised{ SpFileStream.new }
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_SpInProcRecoContext
|
41
|
+
omit_if(windows_xp?, "SpInProcRecoContext skipped on Windows XP")
|
42
|
+
assert_nothing_raised{ SpInProcRecoContext.new }
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_SpInProcRecognizer
|
46
|
+
assert_nothing_raised{ SpInProcRecognizer.new }
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_SpLexicon
|
50
|
+
assert_nothing_raised{ SpLexicon.new }
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_SpMemoryStream
|
54
|
+
assert_nothing_raised{ SpMemoryStream.new }
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_SpMMAudioIn
|
58
|
+
assert_nothing_raised{ SpMMAudioIn.new }
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_SpMMAudioOut
|
62
|
+
assert_nothing_raised{ SpMMAudioOut.new }
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_SpObjectToken
|
66
|
+
assert_nothing_raised{ SpObjectToken.new }
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_SpObjectTokenCategory
|
70
|
+
assert_nothing_raised{ SpObjectTokenCategory.new }
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_SpPhoneConverter
|
74
|
+
assert_nothing_raised{ SpPhoneConverter.new }
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_SpPhraseInfoBuilder
|
78
|
+
assert_nothing_raised{ SpPhraseInfoBuilder.new }
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_SpSharedRecoContext
|
82
|
+
omit_if(windows_xp?, "SpSharedRecoContext skipped on Windows XP")
|
83
|
+
assert_nothing_raised{ SpSharedRecoContext.new }
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_SpSharedRecognizer
|
87
|
+
assert_nothing_raised{ SpSharedRecognizer.new }
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_SpTextSelectionInformation
|
91
|
+
assert_nothing_raised{ SpTextSelectionInformation.new }
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_SpUnCompressedLexicon
|
95
|
+
assert_nothing_raised{ SpUnCompressedLexicon.new }
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_SpVoice
|
99
|
+
assert_nothing_raised{ SpVoice.new }
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_SpWaveFormatEx
|
103
|
+
assert_nothing_raised{ SpWaveFormatEx.new }
|
104
|
+
end
|
103
105
|
end
|
data/win32-sapi.gemspec
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'win32-sapi'
|
5
|
+
spec.version = '0.1.6'
|
6
|
+
spec.author = 'Daniel J. Berger'
|
7
|
+
spec.license = 'Artistic 2.0'
|
8
|
+
spec.email = 'djberg96@gmail.com'
|
9
|
+
spec.homepage = 'http://www.rubyforge.org/projects/win32utils'
|
10
|
+
spec.platform = Gem::Platform::RUBY
|
11
|
+
spec.summary = 'An interface to the MS SAPI (Sound API) library.'
|
12
|
+
spec.test_file = 'test/test_win32_sapi5.rb'
|
13
|
+
spec.has_rdoc = true
|
14
|
+
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
15
|
+
|
16
|
+
spec.rubyforge_project = 'win32utils'
|
17
|
+
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
18
|
+
|
19
|
+
spec.add_development_dependency('windows-pr')
|
20
|
+
|
21
|
+
spec.description = <<-EOF
|
22
|
+
The win32-sapi library provides an interface to the MS Windows sound
|
23
|
+
interface, otherwise known as SAPI, using OLE.
|
24
|
+
EOF
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-sapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 23
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Daniel J. Berger
|
@@ -9,11 +15,24 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-01-17 00:00:00 -07:00
|
13
19
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: windows-pr
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
description: " The win32-sapi library provides an interface to the MS Windows sound\n interface, otherwise known as SAPI, using OLE.\n"
|
17
36
|
email: djberg96@gmail.com
|
18
37
|
executables: []
|
19
38
|
|
@@ -42,21 +61,27 @@ rdoc_options: []
|
|
42
61
|
require_paths:
|
43
62
|
- lib
|
44
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
45
65
|
requirements:
|
46
66
|
- - ">="
|
47
67
|
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
48
71
|
version: "0"
|
49
|
-
version:
|
50
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
51
74
|
requirements:
|
52
75
|
- - ">="
|
53
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
54
80
|
version: "0"
|
55
|
-
version:
|
56
81
|
requirements: []
|
57
82
|
|
58
83
|
rubyforge_project: win32utils
|
59
|
-
rubygems_version: 1.3.
|
84
|
+
rubygems_version: 1.3.7
|
60
85
|
signing_key:
|
61
86
|
specification_version: 3
|
62
87
|
summary: An interface to the MS SAPI (Sound API) library.
|