ruby_speech 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -45,6 +45,243 @@ module RubySpeech
45
45
  end
46
46
  end
47
47
 
48
+ describe "#potential_match?" do
49
+ before do
50
+ items.each { |item| subject << item }
51
+ end
52
+
53
+ context "with a single item of '6'" do
54
+ let(:items) { [Item.new << (Token.new << '6')] }
55
+
56
+ it "should be true for '6'" do
57
+ subject.potential_match?('6').should be true
58
+ end
59
+
60
+ %w{5 7}.each do |input|
61
+ it "should be false for '#{input}'" do
62
+ subject.potential_match?(input).should be false
63
+ end
64
+ end
65
+ end
66
+
67
+ context "with options of '6' or '7'" do
68
+ let(:items) { [Item.new << (Token.new << '6'), Item.new << (Token.new << '7')] }
69
+
70
+ %w{6 7}.each do |input|
71
+ it "should be true for '#{input}'" do
72
+ subject.potential_match?(input).should be true
73
+ end
74
+ end
75
+
76
+ %w{5 8 67 76}.each do |input|
77
+ it "should be false for '#{input}'" do
78
+ subject.potential_match?(input).should be false
79
+ end
80
+ end
81
+ end
82
+
83
+ context "with options of '67' or '25'" do
84
+ let(:items) { [Item.new << (Token.new << '6') << (Token.new << '7'), Item.new << (Token.new << '2') << (Token.new << '5')] }
85
+
86
+ %w{6 2}.each do |input|
87
+ it "should be true for '#{input}'" do
88
+ subject.potential_match?(input).should be true
89
+ end
90
+ end
91
+
92
+ %w{3 7 5 65 27 76 52}.each do |input|
93
+ it "should be false for '#{input}'" do
94
+ subject.potential_match?(input).should be false
95
+ end
96
+ end
97
+ end
98
+
99
+ context "with options of '678' or '251'" do
100
+ let(:items) { [Item.new << (Token.new << '6') << (Token.new << '7') << (Token.new << '8'), Item.new << (Token.new << '2') << (Token.new << '5') << (Token.new << '1')] }
101
+
102
+ %w{6 67 2 25}.each do |input|
103
+ it "should be true for '#{input}'" do
104
+ subject.potential_match?(input).should be true
105
+ end
106
+ end
107
+
108
+ %w{3 7 5 65 27 76 52}.each do |input|
109
+ it "should be false for '#{input}'" do
110
+ subject.potential_match?(input).should be false
111
+ end
112
+ end
113
+ end
114
+
115
+ context "with options of '6' or ('7' repeated twice)" do
116
+ let(:items) { [Item.new << (Token.new << '6'), Item.new << (Item.new(:repeat => 2) << (Token.new << '7'))] }
117
+
118
+ %w{6 7 77}.each do |input|
119
+ it "should be true for '#{input}'" do
120
+ pending
121
+ subject.potential_match?(input).should be true
122
+ end
123
+ end
124
+
125
+ %w{5 67 76 66}.each do |input|
126
+ it "should be false for '#{input}'" do
127
+ subject.potential_match?(input).should be false
128
+ end
129
+ end
130
+ end
131
+ end
132
+
133
+ describe "#longest_potential_match" do
134
+ before do
135
+ items.each { |item| subject << item }
136
+ end
137
+
138
+ context "with a single item of '6'" do
139
+ let(:items) { [Item.new << (Token.new << '6')] }
140
+
141
+ %w{6 65 6776}.each do |input|
142
+ it "should be '6' for '#{input}'" do
143
+ subject.longest_potential_match(input).should == '6'
144
+ end
145
+ end
146
+
147
+ %w{5 7 55 56}.each do |input|
148
+ it "should be '' for '#{input}'" do
149
+ subject.longest_potential_match(input).should == ''
150
+ end
151
+ end
152
+ end
153
+
154
+ context "with options of '6' or '7'" do
155
+ let(:items) { [Item.new << (Token.new << '6'), Item.new << (Token.new << '7')] }
156
+
157
+ %w{6 65 6776}.each do |input|
158
+ it "should be '6' for '#{input}'" do
159
+ subject.longest_potential_match(input).should == '6'
160
+ end
161
+ end
162
+
163
+ %w{7 74 726}.each do |input|
164
+ it "should be '7' for '#{input}'" do
165
+ subject.longest_potential_match(input).should == '7'
166
+ end
167
+ end
168
+
169
+ %w{5 55 56}.each do |input|
170
+ it "should be '' for '#{input}'" do
171
+ subject.longest_potential_match(input).should == ''
172
+ end
173
+ end
174
+ end
175
+
176
+ context "with options of '67' or '25'" do
177
+ let(:items) { [Item.new << (Token.new << '6') << (Token.new << '7'), Item.new << (Token.new << '2') << (Token.new << '5')] }
178
+
179
+ %w{6}.each do |input|
180
+ it "should be '6' for '#{input}'" do
181
+ subject.longest_potential_match(input).should == '6'
182
+ end
183
+ end
184
+
185
+ %w{67 675 6767 6756}.each do |input|
186
+ it "should be '67' for '#{input}'" do
187
+ subject.longest_potential_match(input).should == '67'
188
+ end
189
+ end
190
+
191
+ %w{2}.each do |input|
192
+ it "should be '2' for '#{input}'" do
193
+ subject.longest_potential_match(input).should == '2'
194
+ end
195
+ end
196
+
197
+ %w{25 259 2525 2567}.each do |input|
198
+ it "should be '25' for '#{input}'" do
199
+ subject.longest_potential_match(input).should == '25'
200
+ end
201
+ end
202
+
203
+ %w{5 7 72 56}.each do |input|
204
+ it "should be '' for '#{input}'" do
205
+ subject.longest_potential_match(input).should == ''
206
+ end
207
+ end
208
+ end
209
+
210
+ context "with options of '678' or '251'" do
211
+ let(:items) { [Item.new << (Token.new << '6') << (Token.new << '7') << (Token.new << '8'), Item.new << (Token.new << '2') << (Token.new << '5') << (Token.new << '1')] }
212
+
213
+ %w{6}.each do |input|
214
+ it "should be '6' for '#{input}'" do
215
+ subject.longest_potential_match(input).should == '6'
216
+ end
217
+ end
218
+
219
+ %w{67 675 6767 6756}.each do |input|
220
+ it "should be '67' for '#{input}'" do
221
+ subject.longest_potential_match(input).should == '67'
222
+ end
223
+ end
224
+
225
+ %w{678 6785 678678 67856}.each do |input|
226
+ it "should be '678' for '#{input}'" do
227
+ subject.longest_potential_match(input).should == '678'
228
+ end
229
+ end
230
+
231
+ %w{2}.each do |input|
232
+ it "should be '2' for '#{input}'" do
233
+ subject.longest_potential_match(input).should == '2'
234
+ end
235
+ end
236
+
237
+ %w{25 259 2525 2567}.each do |input|
238
+ it "should be '25' for '#{input}'" do
239
+ subject.longest_potential_match(input).should == '25'
240
+ end
241
+ end
242
+
243
+ %w{251 2519 251251 25167}.each do |input|
244
+ it "should be '251' for '#{input}'" do
245
+ subject.longest_potential_match(input).should == '251'
246
+ end
247
+ end
248
+
249
+ %w{5 7 72 56}.each do |input|
250
+ it "should be '' for '#{input}'" do
251
+ subject.longest_potential_match(input).should == ''
252
+ end
253
+ end
254
+ end
255
+
256
+ context "with options of '6' or '7' repeated twice" do
257
+ let(:items) { [Item.new << (Token.new << '6'), Item.new << (Item.new(:repeat => 2) << (Token.new << '7'))] }
258
+
259
+ %w{6 65 6776}.each do |input|
260
+ it "should be '6' for '#{input}'" do
261
+ subject.longest_potential_match(input).should == '6'
262
+ end
263
+ end
264
+
265
+ %w{7 74 726}.each do |input|
266
+ it "should be '7' for '#{input}'" do
267
+ subject.longest_potential_match(input).should == '7'
268
+ end
269
+ end
270
+
271
+ %w{7 77 774 7726}.each do |input|
272
+ it "should be '77' for '#{input}'" do
273
+ pending
274
+ subject.longest_potential_match(input).should == '77'
275
+ end
276
+ end
277
+
278
+ %w{5 55 56}.each do |input|
279
+ it "should be '' for '#{input}'" do
280
+ subject.longest_potential_match(input).should == ''
281
+ end
282
+ end
283
+ end
284
+ end
48
285
  end # OneOf
49
286
  end # GRXML
50
287
  end # RubySpeech
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ module RubySpeech
4
+ module GRXML
5
+ describe PotentialMatch do
6
+ describe "equality" do
7
+ it "should be equal to another PotentialMatch" do
8
+ PotentialMatch.new.should == PotentialMatch.new
9
+ end
10
+
11
+ it "should not equal a match" do
12
+ PotentialMatch.new.should_not == Match.new
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -51,6 +51,11 @@ module RubySpeech
51
51
  it "should accept String" do
52
52
  lambda { subject << 'anything' }.should_not raise_error
53
53
  end
54
+
55
+ it "should allow chaining" do
56
+ subject << 'foo' << 'bar'
57
+ subject.content.should == 'foobar'
58
+ end
54
59
  end
55
60
  end # Token
56
61
  end # GRXML
metadata CHANGED
@@ -1,215 +1,155 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby_speech
3
- version: !ruby/object:Gem::Version
4
- hash: 11
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 0
10
- version: 0.5.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ben Langfeld
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-03 00:00:00 +00:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: niceogiri
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2157608980 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 25
30
- segments:
31
- - 0
32
- - 1
33
- - 1
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 0.1.1
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: activesupport
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2157608980
25
+ - !ruby/object:Gem::Dependency
26
+ name: activesupport
27
+ requirement: &2157608380 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 9
46
- segments:
47
- - 3
48
- - 0
49
- - 7
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
50
32
  version: 3.0.7
51
33
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: bundler
55
34
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2157608380
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &2157607340 !ruby/object:Gem::Requirement
57
39
  none: false
58
- requirements:
40
+ requirements:
59
41
  - - ~>
60
- - !ruby/object:Gem::Version
61
- hash: 23
62
- segments:
63
- - 1
64
- - 0
65
- - 0
42
+ - !ruby/object:Gem::Version
66
43
  version: 1.0.0
67
44
  type: :development
68
- version_requirements: *id003
69
- - !ruby/object:Gem::Dependency
70
- name: rspec
71
45
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2157607340
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &2157606780 !ruby/object:Gem::Requirement
73
50
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 19
78
- segments:
79
- - 2
80
- - 7
81
- - 0
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
82
54
  version: 2.7.0
83
55
  type: :development
84
- version_requirements: *id004
85
- - !ruby/object:Gem::Dependency
86
- name: ci_reporter
87
56
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2157606780
58
+ - !ruby/object:Gem::Dependency
59
+ name: ci_reporter
60
+ requirement: &2157606300 !ruby/object:Gem::Requirement
89
61
  none: false
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- hash: 9
94
- segments:
95
- - 1
96
- - 6
97
- - 3
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
98
65
  version: 1.6.3
99
66
  type: :development
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
- name: yard
103
67
  prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2157606300
69
+ - !ruby/object:Gem::Dependency
70
+ name: yard
71
+ requirement: &2157605820 !ruby/object:Gem::Requirement
105
72
  none: false
106
- requirements:
73
+ requirements:
107
74
  - - ~>
108
- - !ruby/object:Gem::Version
109
- hash: 3
110
- segments:
111
- - 0
112
- - 7
113
- - 0
75
+ - !ruby/object:Gem::Version
114
76
  version: 0.7.0
115
77
  type: :development
116
- version_requirements: *id006
117
- - !ruby/object:Gem::Dependency
118
- name: rake
119
78
  prerelease: false
120
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *2157605820
80
+ - !ruby/object:Gem::Dependency
81
+ name: rake
82
+ requirement: &2157605100 !ruby/object:Gem::Requirement
121
83
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 3
126
- segments:
127
- - 0
128
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
129
88
  type: :development
130
- version_requirements: *id007
131
- - !ruby/object:Gem::Dependency
132
- name: mocha
133
89
  prerelease: false
134
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *2157605100
91
+ - !ruby/object:Gem::Dependency
92
+ name: mocha
93
+ requirement: &2157604620 !ruby/object:Gem::Requirement
135
94
  none: false
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- hash: 3
140
- segments:
141
- - 0
142
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
143
99
  type: :development
144
- version_requirements: *id008
145
- - !ruby/object:Gem::Dependency
146
- name: i18n
147
100
  prerelease: false
148
- requirement: &id009 !ruby/object:Gem::Requirement
101
+ version_requirements: *2157604620
102
+ - !ruby/object:Gem::Dependency
103
+ name: i18n
104
+ requirement: &2157603940 !ruby/object:Gem::Requirement
149
105
  none: false
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- hash: 3
154
- segments:
155
- - 0
156
- version: "0"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
157
110
  type: :development
158
- version_requirements: *id009
159
- - !ruby/object:Gem::Dependency
160
- name: guard
161
111
  prerelease: false
162
- requirement: &id010 !ruby/object:Gem::Requirement
112
+ version_requirements: *2157603940
113
+ - !ruby/object:Gem::Dependency
114
+ name: guard
115
+ requirement: &2157603200 !ruby/object:Gem::Requirement
163
116
  none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- hash: 59
168
- segments:
169
- - 0
170
- - 9
171
- - 0
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
172
120
  version: 0.9.0
173
121
  type: :development
174
- version_requirements: *id010
175
- - !ruby/object:Gem::Dependency
176
- name: guard-rspec
177
122
  prerelease: false
178
- requirement: &id011 !ruby/object:Gem::Requirement
123
+ version_requirements: *2157603200
124
+ - !ruby/object:Gem::Dependency
125
+ name: guard-rspec
126
+ requirement: &2157602480 !ruby/object:Gem::Requirement
179
127
  none: false
180
- requirements:
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- hash: 3
184
- segments:
185
- - 0
186
- version: "0"
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
187
132
  type: :development
188
- version_requirements: *id011
189
- - !ruby/object:Gem::Dependency
190
- name: ruby_gntp
191
133
  prerelease: false
192
- requirement: &id012 !ruby/object:Gem::Requirement
134
+ version_requirements: *2157602480
135
+ - !ruby/object:Gem::Dependency
136
+ name: ruby_gntp
137
+ requirement: &2157601680 !ruby/object:Gem::Requirement
193
138
  none: false
194
- requirements:
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- hash: 3
198
- segments:
199
- - 0
200
- version: "0"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
201
143
  type: :development
202
- version_requirements: *id012
144
+ prerelease: false
145
+ version_requirements: *2157601680
203
146
  description: Prepare SSML and GRXML documents with ease
204
- email:
147
+ email:
205
148
  - ben@langfeld.me
206
149
  executables: []
207
-
208
150
  extensions: []
209
-
210
151
  extra_rdoc_files: []
211
-
212
- files:
152
+ files:
213
153
  - .gitignore
214
154
  - .rspec
215
155
  - .travis.yml
@@ -233,6 +173,7 @@ files:
233
173
  - lib/ruby_speech/grxml/match.rb
234
174
  - lib/ruby_speech/grxml/no_match.rb
235
175
  - lib/ruby_speech/grxml/one_of.rb
176
+ - lib/ruby_speech/grxml/potential_match.rb
236
177
  - lib/ruby_speech/grxml/rule.rb
237
178
  - lib/ruby_speech/grxml/ruleref.rb
238
179
  - lib/ruby_speech/grxml/tag.rb
@@ -261,6 +202,7 @@ files:
261
202
  - spec/ruby_speech/grxml/match_spec.rb
262
203
  - spec/ruby_speech/grxml/no_match_spec.rb
263
204
  - spec/ruby_speech/grxml/one_of_spec.rb
205
+ - spec/ruby_speech/grxml/potential_match_spec.rb
264
206
  - spec/ruby_speech/grxml/rule_spec.rb
265
207
  - spec/ruby_speech/grxml/ruleref_spec.rb
266
208
  - spec/ruby_speech/grxml/tag_spec.rb
@@ -282,46 +224,43 @@ files:
282
224
  - spec/ruby_speech/ssml_spec.rb
283
225
  - spec/spec_helper.rb
284
226
  - spec/support/matchers.rb
285
- has_rdoc: true
286
227
  homepage: https://github.com/benlangfeld/ruby_speech
287
228
  licenses: []
288
-
289
229
  post_install_message:
290
230
  rdoc_options: []
291
-
292
- require_paths:
231
+ require_paths:
293
232
  - lib
294
- required_ruby_version: !ruby/object:Gem::Requirement
233
+ required_ruby_version: !ruby/object:Gem::Requirement
295
234
  none: false
296
- requirements:
297
- - - ">="
298
- - !ruby/object:Gem::Version
299
- hash: 3
300
- segments:
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ segments:
301
240
  - 0
302
- version: "0"
303
- required_rubygems_version: !ruby/object:Gem::Requirement
241
+ hash: 4175353066931902449
242
+ required_rubygems_version: !ruby/object:Gem::Requirement
304
243
  none: false
305
- requirements:
306
- - - ">="
307
- - !ruby/object:Gem::Version
308
- hash: 3
309
- segments:
244
+ requirements:
245
+ - - ! '>='
246
+ - !ruby/object:Gem::Version
247
+ version: '0'
248
+ segments:
310
249
  - 0
311
- version: "0"
250
+ hash: 4175353066931902449
312
251
  requirements: []
313
-
314
252
  rubyforge_project: ruby_speech
315
- rubygems_version: 1.6.2
253
+ rubygems_version: 1.8.10
316
254
  signing_key:
317
255
  specification_version: 3
318
256
  summary: A ruby library for TTS & ASR document preparation
319
- test_files:
257
+ test_files:
320
258
  - spec/ruby_speech/grxml/grammar_spec.rb
321
259
  - spec/ruby_speech/grxml/item_spec.rb
322
260
  - spec/ruby_speech/grxml/match_spec.rb
323
261
  - spec/ruby_speech/grxml/no_match_spec.rb
324
262
  - spec/ruby_speech/grxml/one_of_spec.rb
263
+ - spec/ruby_speech/grxml/potential_match_spec.rb
325
264
  - spec/ruby_speech/grxml/rule_spec.rb
326
265
  - spec/ruby_speech/grxml/ruleref_spec.rb
327
266
  - spec/ruby_speech/grxml/tag_spec.rb
@@ -343,3 +282,4 @@ test_files:
343
282
  - spec/ruby_speech/ssml_spec.rb
344
283
  - spec/spec_helper.rb
345
284
  - spec/support/matchers.rb
285
+ has_rdoc: