linguistics 1.0.9 → 2.0.0

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.
Files changed (69) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.gemtest +0 -0
  3. data/ChangeLog +849 -342
  4. data/History.rdoc +11 -0
  5. data/LICENSE +9 -9
  6. data/Manifest.txt +44 -0
  7. data/README.rdoc +226 -0
  8. data/Rakefile +32 -349
  9. data/examples/endocs.rb +272 -0
  10. data/examples/generalize_sentence.rb +2 -1
  11. data/examples/klingon.rb +22 -0
  12. data/lib/linguistics.rb +130 -292
  13. data/lib/linguistics/en.rb +337 -1628
  14. data/lib/linguistics/en/articles.rb +138 -0
  15. data/lib/linguistics/en/conjugation.rb +2245 -0
  16. data/lib/linguistics/en/conjunctions.rb +202 -0
  17. data/lib/linguistics/en/{infinitive.rb → infinitives.rb} +41 -55
  18. data/lib/linguistics/en/linkparser.rb +41 -49
  19. data/lib/linguistics/en/numbers.rb +483 -0
  20. data/lib/linguistics/en/participles.rb +33 -0
  21. data/lib/linguistics/en/pluralization.rb +810 -0
  22. data/lib/linguistics/en/stemmer.rb +75 -0
  23. data/lib/linguistics/en/titlecase.rb +121 -0
  24. data/lib/linguistics/en/wordnet.rb +63 -97
  25. data/lib/linguistics/inflector.rb +89 -0
  26. data/lib/linguistics/iso639.rb +534 -448
  27. data/lib/linguistics/languagebehavior.rb +36 -0
  28. data/lib/linguistics/monkeypatches.rb +42 -0
  29. data/spec/lib/constants.rb +15 -0
  30. data/spec/lib/helpers.rb +38 -0
  31. data/spec/linguistics/en/articles_spec.rb +797 -0
  32. data/spec/linguistics/en/conjugation_spec.rb +2083 -0
  33. data/spec/linguistics/en/conjunctions_spec.rb +154 -0
  34. data/spec/linguistics/en/infinitives_spec.rb +518 -0
  35. data/spec/linguistics/en/linkparser_spec.rb +66 -0
  36. data/spec/linguistics/en/numbers_spec.rb +1295 -0
  37. data/spec/linguistics/en/participles_spec.rb +55 -0
  38. data/spec/linguistics/en/pluralization_spec.rb +4636 -0
  39. data/spec/linguistics/en/stemmer_spec.rb +72 -0
  40. data/spec/linguistics/en/titlecase_spec.rb +841 -0
  41. data/spec/linguistics/en/wordnet_spec.rb +85 -0
  42. data/spec/linguistics/en_spec.rb +45 -167
  43. data/spec/linguistics/inflector_spec.rb +40 -0
  44. data/spec/linguistics/iso639_spec.rb +49 -53
  45. data/spec/linguistics/monkeypatches_spec.rb +40 -0
  46. data/spec/linguistics_spec.rb +46 -76
  47. metadata +241 -113
  48. metadata.gz.sig +0 -0
  49. data/README +0 -166
  50. data/README.english +0 -245
  51. data/rake/191_compat.rb +0 -26
  52. data/rake/dependencies.rb +0 -76
  53. data/rake/documentation.rb +0 -123
  54. data/rake/helpers.rb +0 -502
  55. data/rake/hg.rb +0 -318
  56. data/rake/manual.rb +0 -787
  57. data/rake/packaging.rb +0 -129
  58. data/rake/publishing.rb +0 -341
  59. data/rake/style.rb +0 -62
  60. data/rake/svn.rb +0 -668
  61. data/rake/testing.rb +0 -152
  62. data/rake/verifytask.rb +0 -64
  63. data/tests/en/infinitive.tests.rb +0 -207
  64. data/tests/en/inflect.tests.rb +0 -1389
  65. data/tests/en/lafcadio.tests.rb +0 -77
  66. data/tests/en/linkparser.tests.rb +0 -42
  67. data/tests/en/lprintf.tests.rb +0 -77
  68. data/tests/en/titlecase.tests.rb +0 -73
  69. data/tests/en/wordnet.tests.rb +0 -95
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env spec -cfs
2
+
3
+ BEGIN {
4
+ require 'pathname'
5
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
6
+
7
+ libdir = basedir + "lib"
8
+
9
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
10
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
+ }
12
+
13
+ require 'rspec'
14
+ require 'spec/lib/helpers'
15
+
16
+ require 'linguistics'
17
+ require 'linguistics/en'
18
+ require 'linguistics/en/conjunctions'
19
+
20
+
21
+ describe Linguistics::EN::Conjunctions do
22
+
23
+ before( :all ) do
24
+ Linguistics.use( :en )
25
+ setup_logging( :fatal )
26
+ end
27
+
28
+
29
+ TEST_ITEMS = %w[cow chicken dog goat dog dog duck duck goose goose goose dog goat]
30
+
31
+ it "don't use a penultimate separator if it's turned off" do
32
+ TEST_ITEMS.en.conjunction( :penultimate => false ).should ==
33
+ "four dogs, three geese, two goats, two ducks, a cow and a chicken"
34
+ end
35
+
36
+ it "honors the penultimate setting even if there are only three items (bugfix)" do
37
+ %w[duck cow dog].en.conjunction( :penultimate => false ).should ==
38
+ "a duck, a cow and a dog"
39
+ end
40
+
41
+ it "uses the supplied block for transformation before building the conjunction" do
42
+ TEST_ITEMS.en.conjunction {|item| "'%s' animal" % [item[0]] }.should ==
43
+ "six 'd' animals, five 'g' animals, and two 'c' animals"
44
+ end
45
+
46
+ it "uses the alternative separator if one or more phrases include the primary one" do
47
+ scene_items = [
48
+ "desk with stamps, paper, and envelopes on it",
49
+ "basket containing milk, eggs, and broccoli",
50
+ "chair", "chair", "chair",
51
+ "wooden chest",
52
+ "hat rack",
53
+ ]
54
+
55
+ scene_items.en.conjunction.should ==
56
+ "three chairs; a desk with stamps, paper, and envelopes on it; " +
57
+ "a basket containing milk, eggs, and broccoli; " +
58
+ "a wooden chest; and a hat rack"
59
+ end
60
+
61
+
62
+ describe "with an Array of a single element" do
63
+
64
+ before( :each ) do
65
+ @array = ['cat']
66
+ end
67
+
68
+ it "results in a phrase with indefinite article" do
69
+ @array.en.conjunction.should == "a cat"
70
+ end
71
+
72
+ end
73
+
74
+
75
+ describe "with an Array of two different words" do
76
+
77
+ before( :each ) do
78
+ @array = ['cat', 'dog']
79
+ end
80
+
81
+ it "results in a phrase joined with 'and' with default options" do
82
+ @array.en.conjunction.should == "a cat and a dog"
83
+ end
84
+
85
+ it "results in a phrase joined with 'plus' if 'plus' is set as the conjunctive" do
86
+ @array.en.conjunction(:conjunctive => 'plus').should == "a cat plus a dog"
87
+ end
88
+
89
+ it "results in a phrase joined with a space if an empty string is set as the conjunctive" do
90
+ @array.en.conjunction(:conjunctive => '').should == "a cat a dog"
91
+ end
92
+
93
+ end
94
+
95
+
96
+ describe "with an Array of two words that differ only in case" do
97
+
98
+ before( :each ) do
99
+ @array = ['cat', 'Cat']
100
+ end
101
+
102
+ it "combines them into their downcased equivalents with default options" do
103
+ @array.en.conjunction.should == "two cats"
104
+ end
105
+
106
+ it "lists them separately if :combine is set to false" do
107
+ @array.en.conjunction(:combine => false).should == "a cat and a Cat"
108
+ end
109
+
110
+ it "doesn't combine them if :casefold is turned off" do
111
+ @array.en.conjunction(:casefold => false).should == "a cat and a Cat"
112
+ end
113
+
114
+ it "combines and lists them with a non-specific count if :generalize is set" do
115
+ @array.en.conjunction(:generalize => true).should == "several cats"
116
+ end
117
+
118
+ end
119
+
120
+
121
+ describe "with an Array of many (more than two) words of varying cases" do
122
+
123
+ before( :each ) do
124
+ @array = %w{cat dog fox dog chicken chicken Fox chicken goose Dog goose}
125
+ end
126
+
127
+ it "combines them into their downcased equivalents and lists them in order of amount " +
128
+ "with default options" do
129
+ @array.en.conjunction.should ==
130
+ 'three dogs, three chickens, two foxes, two geese, and a cat'
131
+ end
132
+
133
+ it "lists them separately if :combine is set to false" do
134
+ @array.en.conjunction(:combine => false).should ==
135
+ 'a cat, a dog, a fox, a dog, a chicken, a chicken, a Fox, a '\
136
+ 'chicken, a goose, a Dog, and a goose'
137
+ end
138
+
139
+ it "doesn't combine the differently-cased ones if :casefold is turned off" do
140
+ @array.en.conjunction(:casefold => false).should ==
141
+ 'three chickens, two dogs, two geese, a cat, a fox, a Fox, '\
142
+ 'and a Dog'
143
+ end
144
+
145
+ it "combines and lists them with a non-specific count if :generalize is set" do
146
+ @array.en.conjunction(:generalize => true).should ==
147
+ 'several dogs, several chickens, several foxes, several '\
148
+ 'geese, and a cat'
149
+ end
150
+
151
+ end
152
+
153
+
154
+ end
@@ -0,0 +1,518 @@
1
+ #!/usr/bin/env spec -cfs
2
+
3
+ BEGIN {
4
+ require 'pathname'
5
+ basedir = Pathname.new( __FILE__ ).dirname.parent.parent.parent
6
+
7
+ libdir = basedir + "lib"
8
+
9
+ $LOAD_PATH.unshift( basedir.to_s ) unless $LOAD_PATH.include?( basedir.to_s )
10
+ $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
11
+ }
12
+
13
+ require 'rspec'
14
+ require 'spec/lib/helpers'
15
+
16
+ require 'linguistics'
17
+ require 'linguistics/en/infinitives'
18
+
19
+
20
+ describe Linguistics::EN::Infinitives do
21
+
22
+ before( :all ) do
23
+ setup_logging( :fatal )
24
+ Linguistics.use( :en, :proxy => true )
25
+ include Linguistics::EN
26
+ end
27
+
28
+ after( :all ) do
29
+ reset_logging()
30
+ end
31
+
32
+
33
+ describe "Infinitive object class" do
34
+ it "compares as equal if its primary word is equal" do
35
+ Linguistics::EN::Infinitives::Infinitive.new( 'basse', 'bass', 's', '2' ).should ==
36
+ 'basse'
37
+ end
38
+
39
+ it "compares as equal if its secondary word is equal" do
40
+ Linguistics::EN::Infinitives::Infinitive.new( 'basse', 'bass', 's', '2' ).should ==
41
+ 'bass'
42
+ end
43
+
44
+ end
45
+
46
+
47
+ it "uses rule 1 when calculating the infinitive of 'aches'" do
48
+ "aches".en.infinitive.should == 'ache'
49
+ "aches".en.infinitive.rule.should == '1'
50
+ end
51
+
52
+ it "uses rule 2 when calculating the infinitive of 'vases'" do
53
+ "vases".en.infinitive.should == 'vase'
54
+ "vases".en.infinitive.rule.should == '2'
55
+ end
56
+
57
+ it "uses rule 2 when calculating the infinitive of 'basses'" do
58
+ "basses".en.infinitive.should == 'bass'
59
+ "basses".en.infinitive.rule.should == '2'
60
+ end
61
+
62
+ it "uses rule 3 when calculating the infinitive of 'axes'" do
63
+ "axes".en.infinitive.should == 'axe'
64
+ "axes".en.infinitive.rule.should == '3'
65
+ end
66
+
67
+ it "uses rule 3 when calculating the infinitive of 'fixes'" do
68
+ "fixes".en.infinitive.should == 'fix'
69
+ "fixes".en.infinitive.rule.should == '3'
70
+ end
71
+
72
+ it "uses rule 4 when calculating the infinitive of 'hazes'" do
73
+ "hazes".en.infinitive.should == 'haze'
74
+ "hazes".en.infinitive.rule.should == '4'
75
+ end
76
+
77
+ it "uses rule 4 when calculating the infinitive of 'buzzes'" do
78
+ "buzzes".en.infinitive.should == 'buzz'
79
+ "buzzes".en.infinitive.rule.should == '4'
80
+ end
81
+
82
+ it "uses rule 6a when calculating the infinitive of 'caress'" do
83
+ "caress".en.infinitive.should == 'caress'
84
+ "caress".en.infinitive.rule.should == '6a'
85
+ end
86
+
87
+ it "uses rule 6b when calculating the infinitive of 'bans'" do
88
+ "bans".en.infinitive.should == 'ban'
89
+ "bans".en.infinitive.rule.should == '6b'
90
+ end
91
+
92
+ it "uses rule 7 when calculating the infinitive of 'Jones's'" do
93
+ "Jones's".en.infinitive.should == 'Jones'
94
+ "Jones's".en.infinitive.rule.should == '7'
95
+ end
96
+
97
+ it "uses rule 8 when calculating the infinitive of 'creater'" do
98
+ "creater".en.infinitive.should == 'creater'
99
+ "creater".en.infinitive.rule.should == '8'
100
+ end
101
+
102
+ it "uses rule 9 when calculating the infinitive of 'reacter'" do
103
+ "reacter".en.infinitive.should == 'reacter'
104
+ "reacter".en.infinitive.rule.should == '9'
105
+ end
106
+
107
+ it "uses rule 10 when calculating the infinitive of 'copier'" do
108
+ "copier".en.infinitive.should == 'copy'
109
+ "copier".en.infinitive.rule.should == '10'
110
+ end
111
+
112
+ it "uses rule 11 when calculating the infinitive of 'baker'" do
113
+ "baker".en.infinitive.should == 'bake'
114
+ "baker".en.infinitive.rule.should == '11'
115
+ end
116
+
117
+ it "uses rule 11 when calculating the infinitive of 'smaller'" do
118
+ "smaller".en.infinitive.should == 'small'
119
+ "smaller".en.infinitive.rule.should == '11'
120
+ end
121
+
122
+ it "uses rule 12a when calculating the infinitive of 'curried'" do
123
+ "curried".en.infinitive.should == 'curry'
124
+ "curried".en.infinitive.rule.should == '12a'
125
+ end
126
+
127
+ it "uses rule 12b when calculating the infinitive of 'bored'" do
128
+ "bored".en.infinitive.should == 'bore'
129
+ "bored".en.infinitive.rule.should == '12b'
130
+ end
131
+
132
+ it "uses rule 12b when calculating the infinitive of 'seated'" do
133
+ "seated".en.infinitive.should == 'seat'
134
+ "seated".en.infinitive.rule.should == '12b'
135
+ end
136
+
137
+ it "uses rule 12b when calculating the infinitive of 'tipped'" do
138
+ "tipped".en.infinitive.should == 'tip'
139
+ "tipped".en.infinitive.rule.should == '12b'
140
+ end
141
+
142
+ it "uses rule 12b when calculating the infinitive of 'kitted'" do
143
+ "kitted".en.infinitive.should == 'kit'
144
+ "kitted".en.infinitive.rule.should == '12b'
145
+ end
146
+
147
+ it "uses rule 12b when calculating the infinitive of 'capped'" do
148
+ "capped".en.infinitive.should == 'cap'
149
+ "capped".en.infinitive.rule.should == '12b'
150
+ end
151
+
152
+ it "uses rule 12b when calculating the infinitive of 'chopped'" do
153
+ "chopped".en.infinitive.should == 'chop'
154
+ "chopped".en.infinitive.rule.should == '12b'
155
+ end
156
+
157
+ it "uses rule 13a when calculating the infinitive of 'flies'" do
158
+ "flies".en.infinitive.should == 'fly'
159
+ "flies".en.infinitive.rule.should == '13a'
160
+ end
161
+
162
+ it "uses rule 13b when calculating the infinitive of 'palates'" do
163
+ "palates".en.infinitive.should == 'palate'
164
+ "palates".en.infinitive.rule.should == '13b'
165
+ end
166
+
167
+ it "uses rule 14a when calculating the infinitive of 'liveliest'" do
168
+ "liveliest".en.infinitive.should == 'lively'
169
+ "liveliest".en.infinitive.rule.should == '14a'
170
+ end
171
+
172
+ it "uses rule 14b when calculating the infinitive of 'wisest'" do
173
+ "wisest".en.infinitive.should == 'wise'
174
+ "wisest".en.infinitive.rule.should == '14b'
175
+ end
176
+
177
+ it "uses rule 14b when calculating the infinitive of 'strongest'" do
178
+ "strongest".en.infinitive.should == 'strong'
179
+ "strongest".en.infinitive.rule.should == '14b'
180
+ end
181
+
182
+ it "uses rule 15 when calculating the infinitive of 'living'" do
183
+ "living".en.infinitive.should == 'live'
184
+ "living".en.infinitive.rule.should == '15'
185
+ end
186
+
187
+ it "uses rule 15 when calculating the infinitive of 'laughing'" do
188
+ "laughing".en.infinitive.should == 'laugh'
189
+ "laughing".en.infinitive.rule.should == '15'
190
+ end
191
+
192
+ it "uses rule 15 when calculating the infinitive of 'swaying'" do
193
+ "swaying".en.infinitive.should == 'sway'
194
+ "swaying".en.infinitive.rule.should == '15'
195
+ end
196
+
197
+ it "uses rule 15 when calculating the infinitive of 'catching'" do
198
+ "catching".en.infinitive.should == 'catch'
199
+ "catching".en.infinitive.rule.should == '15'
200
+ end
201
+
202
+ it "uses rule 15 when calculating the infinitive of 'smiling'" do
203
+ "smiling".en.infinitive.should == 'smile'
204
+ "smiling".en.infinitive.rule.should == '15'
205
+ end
206
+
207
+ it "uses rule 15 when calculating the infinitive of 'swimming'" do
208
+ "swimming".en.infinitive.should == 'swim'
209
+ "swimming".en.infinitive.rule.should == '15'
210
+ end
211
+
212
+ it "uses rule 15 when calculating the infinitive of 'running'" do
213
+ "running".en.infinitive.should == 'run'
214
+ "running".en.infinitive.rule.should == '15'
215
+ end
216
+
217
+ it "uses rule 15 when calculating the infinitive of 'floating'" do
218
+ "floating".en.infinitive.should == 'float'
219
+ "floating".en.infinitive.rule.should == '15'
220
+ end
221
+
222
+ it "uses rule 15 when calculating the infinitive of 'keyboarding'" do
223
+ "keyboarding".en.infinitive.should == 'keyboard'
224
+ "keyboarding".en.infinitive.rule.should == '15'
225
+ end
226
+
227
+ it "uses rule 15 when calculating the infinitive of 'wrestling'" do
228
+ "wrestling".en.infinitive.should == 'wrestle'
229
+ "wrestling".en.infinitive.rule.should == '15'
230
+ end
231
+
232
+ it "uses rule 15 when calculating the infinitive of 'traveling'" do
233
+ "traveling".en.infinitive.should == 'travel'
234
+ "traveling".en.infinitive.rule.should == '15'
235
+ end
236
+
237
+ it "uses rule 15 when calculating the infinitive of 'traipsing'" do
238
+ "traipsing".en.infinitive.should == 'traipse'
239
+ "traipsing".en.infinitive.rule.should == '15'
240
+ end
241
+
242
+ it "uses rule 16 when calculating the infinitive of 'stylist'" do
243
+ "stylist".en.infinitive.should == 'style'
244
+ "stylist".en.infinitive.rule.should == '16'
245
+ end
246
+
247
+ it "uses rule 16 when calculating the infinitive of 'dentist'" do
248
+ "dentist".en.infinitive.should == 'dent'
249
+ "dentist".en.infinitive.rule.should == '16'
250
+ end
251
+
252
+ it "uses rule 17 when calculating the infinitive of 'cubism'" do
253
+ "cubism".en.infinitive.should == 'cube'
254
+ "cubism".en.infinitive.rule.should == '17'
255
+ end
256
+
257
+ it "uses rule 17 when calculating the infinitive of 'socialism'" do
258
+ "socialism".en.infinitive.should == 'social'
259
+ "socialism".en.infinitive.rule.should == '17'
260
+ end
261
+
262
+ it "uses rule 18 when calculating the infinitive of 'scarcity'" do
263
+ "scarcity".en.infinitive.should == 'scarce'
264
+ "scarcity".en.infinitive.rule.should == '18'
265
+ end
266
+
267
+ it "uses rule 18 when calculating the infinitive of 'rapidity'" do
268
+ "rapidity".en.infinitive.should == 'rapid'
269
+ "rapidity".en.infinitive.rule.should == '18'
270
+ end
271
+
272
+ it "uses rule 19 when calculating the infinitive of 'immunize'" do
273
+ "immunize".en.infinitive.should == 'immune'
274
+ "immunize".en.infinitive.rule.should == '19'
275
+ end
276
+
277
+ it "uses rule 19 when calculating the infinitive of 'lionize'" do
278
+ "lionize".en.infinitive.should == 'lion'
279
+ "lionize".en.infinitive.rule.should == '19'
280
+ end
281
+
282
+ it "uses rule 20c when calculating the infinitive of 'livable'" do
283
+ "livable".en.infinitive.should == 'live'
284
+ "livable".en.infinitive.rule.should == '20c'
285
+ end
286
+
287
+ it "uses rule 20c when calculating the infinitive of 'portable'" do
288
+ "portable".en.infinitive.should == 'port'
289
+ "portable".en.infinitive.rule.should == '20c'
290
+ end
291
+
292
+ it "uses rule 22 when calculating the infinitive of 'nobility'" do
293
+ "nobility".en.infinitive.should == 'noble'
294
+ "nobility".en.infinitive.rule.should == '22'
295
+ end
296
+
297
+ it "uses rule 23 when calculating the infinitive of 'identifiable'" do
298
+ "identifiable".en.infinitive.should == 'identify'
299
+ "identifiable".en.infinitive.rule.should == '23'
300
+ end
301
+
302
+ it "uses rule 24 when calculating the infinitive of 'psychologist'" do
303
+ "psychologist".en.infinitive.should == 'psychology'
304
+ "psychologist".en.infinitive.rule.should == '24'
305
+ end
306
+
307
+ it "uses rule 25 when calculating the infinitive of 'photographic'" do
308
+ "photographic".en.infinitive.should == 'photography'
309
+ "photographic".en.infinitive.rule.should == '25'
310
+ end
311
+
312
+ it "uses rule 26 when calculating the infinitive of 'stylistic'" do
313
+ "stylistic".en.infinitive.should == 'stylist'
314
+ "stylistic".en.infinitive.rule.should == '26'
315
+ end
316
+
317
+ it "uses rule 27 when calculating the infinitive of 'martensitic'" do
318
+ "martensitic".en.infinitive.should == 'martensite'
319
+ "martensitic".en.infinitive.rule.should == '27'
320
+ end
321
+
322
+ it "uses rule 27 when calculating the infinitive of 'politic'" do
323
+ "politic".en.infinitive.should == 'polite'
324
+ "politic".en.infinitive.rule.should == '27'
325
+ end
326
+
327
+ it "uses rule 28 when calculating the infinitive of 'ladylike'" do
328
+ "ladylike".en.infinitive.should == 'lady'
329
+ "ladylike".en.infinitive.rule.should == '28'
330
+ end
331
+
332
+ it "uses rule 29 when calculating the infinitive of 'biologic'" do
333
+ "biologic".en.infinitive.should == 'biology'
334
+ "biologic".en.infinitive.rule.should == '29'
335
+ end
336
+
337
+ it "uses rule 30 when calculating the infinitive of 'battlement'" do
338
+ "battlement".en.infinitive.should == 'battle'
339
+ "battlement".en.infinitive.rule.should == '30'
340
+ end
341
+
342
+ it "uses rule 31 when calculating the infinitive of 'supplemental'" do
343
+ "supplemental".en.infinitive.should == 'supplement'
344
+ "supplemental".en.infinitive.rule.should == '31'
345
+ end
346
+
347
+ it "uses rule 32 when calculating the infinitive of 'thermometry'" do
348
+ "thermometry".en.infinitive.should == 'thermometer'
349
+ "thermometry".en.infinitive.rule.should == '32'
350
+ end
351
+
352
+ it "uses rule 33 when calculating the infinitive of 'inadvertence'" do
353
+ "inadvertence".en.infinitive.should == 'inadvertent'
354
+ "inadvertence".en.infinitive.rule.should == '33'
355
+ end
356
+
357
+ it "uses rule 34 when calculating the infinitive of 'potency'" do
358
+ "potency".en.infinitive.should == 'potent'
359
+ "potency".en.infinitive.rule.should == '34'
360
+ end
361
+
362
+ it "uses rule 35 when calculating the infinitive of 'discipleship'" do
363
+ "discipleship".en.infinitive.should == 'disciple'
364
+ "discipleship".en.infinitive.rule.should == '35'
365
+ end
366
+
367
+ it "uses rule 36 when calculating the infinitive of 'mystical'" do
368
+ "mystical".en.infinitive.should == 'mystic'
369
+ "mystical".en.infinitive.rule.should == '36'
370
+ end
371
+
372
+ it "uses rule 37 when calculating the infinitive of 'regional'" do
373
+ "regional".en.infinitive.should == 'region'
374
+ "regional".en.infinitive.rule.should == '37'
375
+ end
376
+
377
+ it "uses rule 37 when calculating the infinitive of 'national'" do
378
+ "national".en.infinitive.should == 'nation'
379
+ "national".en.infinitive.rule.should == '37'
380
+ end
381
+
382
+ it "uses rule 38 when calculating the infinitive of 'horribly'" do
383
+ "horribly".en.infinitive.should == 'horrible'
384
+ "horribly".en.infinitive.rule.should == '38'
385
+ end
386
+
387
+ it "uses rule 39 when calculating the infinitive of 'scantily'" do
388
+ "scantily".en.infinitive.should == 'scanty'
389
+ "scantily".en.infinitive.rule.should == '39'
390
+ end
391
+
392
+ it "uses rule 40 when calculating the infinitive of 'partly'" do
393
+ "partly".en.infinitive.should == 'part'
394
+ "partly".en.infinitive.rule.should == '40'
395
+ end
396
+
397
+ it "uses rule 41a when calculating the infinitive of 'dutiful'" do
398
+ "dutiful".en.infinitive.should == 'duty'
399
+ "dutiful".en.infinitive.rule.should == '41a'
400
+ end
401
+
402
+ it "uses rule 41b when calculating the infinitive of 'harmful'" do
403
+ "harmful".en.infinitive.should == 'harm'
404
+ "harmful".en.infinitive.rule.should == '41b'
405
+ end
406
+
407
+ it "uses rule 42a when calculating the infinitive of 'likelihood'" do
408
+ "likelihood".en.infinitive.should == 'likely'
409
+ "likelihood".en.infinitive.rule.should == '42a'
410
+ end
411
+
412
+ it "uses rule 42b when calculating the infinitive of 'neighborhood'" do
413
+ "neighborhood".en.infinitive.should == 'neighbor'
414
+ "neighborhood".en.infinitive.rule.should == '42b'
415
+ end
416
+
417
+ it "uses rule 42b when calculating the infinitive of 'neighbourhood'" do
418
+ "neighbourhood".en.infinitive.should == 'neighbour'
419
+ "neighbourhood".en.infinitive.rule.should == '42b'
420
+ end
421
+
422
+ it "uses rule 43a when calculating the infinitive of 'penniless'" do
423
+ "penniless".en.infinitive.should == 'penny'
424
+ "penniless".en.infinitive.rule.should == '43a'
425
+ end
426
+
427
+ it "uses rule 43b when calculating the infinitive of 'listless'" do
428
+ "listless".en.infinitive.should == 'list'
429
+ "listless".en.infinitive.rule.should == '43b'
430
+ end
431
+
432
+ it "uses rule 44a when calculating the infinitive of 'heartiness'" do
433
+ "heartiness".en.infinitive.should == 'hearty'
434
+ "heartiness".en.infinitive.rule.should == '44a'
435
+ end
436
+
437
+ it "uses rule 44b when calculating the infinitive of 'coolness'" do
438
+ "coolness".en.infinitive.should == 'cool'
439
+ "coolness".en.infinitive.rule.should == '44b'
440
+ end
441
+
442
+ it "uses rule 45 when calculating the infinitive of 'specification'" do
443
+ "specification".en.infinitive.should == 'specify'
444
+ "specification".en.infinitive.rule.should == '45'
445
+ end
446
+
447
+ it "uses rule 46 when calculating the infinitive of 'rationalization'" do
448
+ "rationalization".en.infinitive.should == 'rationalize'
449
+ "rationalization".en.infinitive.rule.should == '46'
450
+ end
451
+
452
+ it "uses rule 47 when calculating the infinitive of 'detection'" do
453
+ "detection".en.infinitive.should == 'detect'
454
+ "detection".en.infinitive.rule.should == '47'
455
+ end
456
+
457
+ it "uses rule 48 when calculating the infinitive of 'exertion'" do
458
+ "exertion".en.infinitive.should == 'exert'
459
+ "exertion".en.infinitive.rule.should == '48'
460
+ end
461
+
462
+ it "uses rule 49 when calculating the infinitive of 'creation'" do
463
+ "creation".en.infinitive.should == 'create'
464
+ "creation".en.infinitive.rule.should == '49'
465
+ end
466
+
467
+ it "uses rule 50 when calculating the infinitive of 'creator'" do
468
+ "creator".en.infinitive.should == 'create'
469
+ "creator".en.infinitive.rule.should == '50'
470
+ end
471
+
472
+ it "uses rule 51 when calculating the infinitive of 'detector'" do
473
+ "detector".en.infinitive.should == 'detect'
474
+ "detector".en.infinitive.rule.should == '51'
475
+ end
476
+
477
+ it "uses rule 52 when calculating the infinitive of 'creative'" do
478
+ "creative".en.infinitive.should == 'creation'
479
+ "creative".en.infinitive.rule.should == '52'
480
+ end
481
+
482
+ it "uses rule 52 when calculating the infinitive of 'decisive'" do
483
+ "decisive".en.infinitive.should == 'decision'
484
+ "decisive".en.infinitive.rule.should == '52'
485
+ end
486
+
487
+ it "uses rule 53 when calculating the infinitive of 'Australian'" do
488
+ "Australian".en.infinitive.should == 'Australia'
489
+ "Australian".en.infinitive.rule.should == '53'
490
+ end
491
+
492
+ it "uses rule 54 when calculating the infinitive of 'Jeffersonian'" do
493
+ "Jeffersonian".en.infinitive.should == 'Jefferson'
494
+ "Jeffersonian".en.infinitive.rule.should == '54'
495
+ end
496
+
497
+ it "uses irregular rule when calculating the infinitive of 'rove'" do
498
+ "rove".en.infinitive.should == 'reeve'
499
+ "rove".en.infinitive.rule.should == 'irregular'
500
+ end
501
+
502
+ it "uses irregular rule when calculating the infinitive of 'dove'" do
503
+ "dove".en.infinitive.should == 'dive'
504
+ "dove".en.infinitive.rule.should == 'irregular'
505
+ end
506
+
507
+ it "uses irregular rule when calculating the infinitive of 'snuck'" do
508
+ "snuck".en.infinitive.should == 'sneak'
509
+ "snuck".en.infinitive.rule.should == 'irregular'
510
+ end
511
+
512
+ it "uses irregular rule when calculating the infinitive of 'wot'" do
513
+ "wot".en.infinitive.should == 'wit'
514
+ "wot".en.infinitive.rule.should == 'irregular'
515
+ end
516
+
517
+ end
518
+