verbs 1.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.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Andy Rossmeissl
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ = verbs
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2009 Andy Rossmeissl. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "verbs"
8
+ gem.summary = %Q{English verb conjugation in Ruby}
9
+ gem.description = %Q{Conjugates most common english verbs for all persons in present and past tense (active diathesis, indicative mood). Standard and exceptional spelling rules are obeyed.}
10
+ gem.email = "andy@rossmeissl.net"
11
+ gem.homepage = "http://github.com/rossmeissl/verbs"
12
+ gem.authors = ["Andy Rossmeissl"]
13
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/test_*.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ task :test => :check_dependencies
41
+
42
+ task :default => :test
43
+
44
+ require 'rake/rdoctask'
45
+ Rake::RDocTask.new do |rdoc|
46
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "verbs #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,429 @@
1
+ Verbs::Conjugator.conjugations do |conjugate|
2
+
3
+ conjugate.irregular :be do |verb| # copular
4
+ verb.form :am, :tense => :present, :person => :first, :plurality => :singular
5
+ verb.form :is, :tense => :present, :person => :third, :plurality => :singular
6
+ verb.form :are, :tense => :present, :person => :second, :plurality => :singular
7
+ verb.form :are, :tense => :present, :person => :first, :plurality => :plural
8
+ verb.form :are, :tense => :present, :person => :third, :plurality => :plural
9
+ verb.form :was, :tense => :past, :person => :first, :plurality => :singular
10
+ verb.form :was, :tense => :past, :person => :third, :plurality => :singular
11
+ verb.form :were, :tense => :past, :person => :second, :plurality => :singular
12
+ verb.form :were, :tense => :past, :person => :first, :plurality => :plural
13
+ verb.form :were, :tense => :past, :person => :third, :plurality => :plural
14
+ verb.form :being, :tense => :present, :derivative => :participle
15
+ verb.form :been, :tense => :past, :derivative => :participle
16
+ end
17
+
18
+ # http://cpansearch.perl.org/src/RWG/Lingua-EN-Conjugate-0.308/lib/Lingua/EN/Conjugate.pm
19
+ conjugate.irregular :awake, :awoke, :awoken
20
+ conjugate.irregular :bear, :bore, :born
21
+ conjugate.irregular :beat, :beat, :beat
22
+ conjugate.irregular :become, :became, :become
23
+ conjugate.irregular :begin, :began, :begun
24
+ conjugate.irregular :bend, :bent, :bent
25
+ conjugate.irregular :beset, :beset, :beset
26
+ conjugate.irregular :bet, :bet, :bet
27
+ conjugate.irregular :bid, :bid, :bid
28
+ conjugate.irregular :bind, :bound, :bound
29
+ conjugate.irregular :bite, :bit, :bitten
30
+ conjugate.irregular :bleed, :bled, :bled
31
+ conjugate.irregular :blow, :blew, :blown
32
+ conjugate.irregular :break, :broke, :broken
33
+ conjugate.irregular :breed, :bred, :bred
34
+ conjugate.irregular :bring, :brought, :brought
35
+ conjugate.irregular :broadcast, :broadcast, :broadcast
36
+ conjugate.irregular :build, :built, :built
37
+ conjugate.irregular :burn, :burned, :burned
38
+ conjugate.irregular :burst, :burst, :burst
39
+ conjugate.irregular :buy, :bought, :bought
40
+ conjugate.irregular :cast, :cast, :cast
41
+ conjugate.irregular :catch, :caught, :caught
42
+ conjugate.irregular :choose, :chose, :chosen
43
+ conjugate.irregular :cling, :clung, :clung
44
+ conjugate.irregular :come, :came, :come
45
+ conjugate.irregular :cost, :cost, :cost
46
+ conjugate.irregular :creep, :crept, :crept
47
+ conjugate.irregular :cut, :cut, :cut
48
+ conjugate.irregular :deal, :dealt, :dealt
49
+ conjugate.irregular :dig, :dug, :dug
50
+ conjugate.irregular :dive, :dove, :dived
51
+ conjugate.irregular 'do', :did, :done
52
+ conjugate.irregular :draw, :drew, :drawn
53
+ conjugate.irregular :dream, :dreamed, :dreamed
54
+ conjugate.irregular :drive, :drove, :driven
55
+ conjugate.irregular :drink, :drank, :drunk
56
+ conjugate.irregular :eat, :ate, :eaten
57
+ conjugate.irregular :fall, :fell, :fallen
58
+ conjugate.irregular :feed, :fed, :fed
59
+ conjugate.irregular :feel, :felt, :felt
60
+ conjugate.irregular :fight, :fought, :fought
61
+ conjugate.irregular :find, :found, :found
62
+ conjugate.irregular :fit, :fit, :fit
63
+ conjugate.irregular :flee, :fled, :fled
64
+ conjugate.irregular :fling, :flung, :flung
65
+ conjugate.irregular :fly, :flew, :flown
66
+ conjugate.irregular :forbid, :forbade, :forbidden
67
+ conjugate.irregular :forget, :forgot, :forgotten
68
+ conjugate.irregular :forego, :forewent, :foregone
69
+ conjugate.irregular :forgo, :forwent, :forgone
70
+ conjugate.irregular :forgive, :forgave, :forgiven
71
+ conjugate.irregular :forsake, :forsook, :forsaken
72
+ conjugate.irregular :freeze, :froze, :frozen
73
+ conjugate.irregular :get, :got, :gotten
74
+ conjugate.irregular :give, :gave, :given
75
+ conjugate.irregular :go, :went, :gone
76
+ conjugate.irregular :grind, :ground, :ground
77
+ conjugate.irregular :grow, :grew, :grown
78
+ conjugate.irregular :hang, :hung, :hung
79
+ conjugate.irregular :have, :had, :had
80
+ conjugate.irregular :hear, :heard, :heard
81
+ conjugate.irregular :hide, :hid, :hidden
82
+ conjugate.irregular :hit, :hit, :hit
83
+ conjugate.irregular :hold, :held, :held
84
+ conjugate.irregular :hurt, :hurt, :hurt
85
+ conjugate.irregular :keep, :kept, :kept
86
+ conjugate.irregular :kneel, :knelt, :knelt
87
+ conjugate.irregular :knit, :knit, :knit
88
+ conjugate.irregular :know, :knew, :know
89
+ conjugate.irregular :lay, :laid, :laid
90
+ conjugate.irregular :lead, :led, :led
91
+ conjugate.irregular :leap, :leaped, :leaped
92
+ conjugate.irregular :learn, :learned, :learned
93
+ conjugate.irregular :leave, :left, :left
94
+ conjugate.irregular :lend, :lent, :lent
95
+ conjugate.irregular :let, :let, :let
96
+ conjugate.irregular :lie, :lay, :lain
97
+ conjugate.irregular :light, :lit, :lighted
98
+ conjugate.irregular :lose, :lost, :lost
99
+ conjugate.irregular :make, :made, :made
100
+ conjugate.irregular :mean, :meant, :meant
101
+ conjugate.irregular :meet, :met, :met
102
+ conjugate.irregular :misspell, :misspelled, :misspelled
103
+ conjugate.irregular :mistake, :mistook, :mistaken
104
+ conjugate.irregular :mow, :mowed, :mowed
105
+ conjugate.irregular :overcome, :overcame, :overcome
106
+ conjugate.irregular :overdo, :overdid, :overdone
107
+ conjugate.irregular :overtake, :overtook, :overtaken
108
+ conjugate.irregular :overthrow, :overthrew, :overthrown
109
+ conjugate.irregular :pay, :paid, :paid
110
+ conjugate.irregular :plead, :pled, :pled
111
+ conjugate.irregular :prove, :proved, :proved
112
+ conjugate.irregular :put, :put, :put
113
+ conjugate.irregular :quit, :quit, :quit
114
+ conjugate.irregular :read, :read, :read
115
+ conjugate.irregular :rid, :rid, :rid
116
+ conjugate.irregular :ride, :rode, :ridden
117
+ conjugate.irregular :ring, :rang, :rung
118
+ conjugate.irregular :rise, :rose, :risen
119
+ conjugate.irregular :run, :ran, :run
120
+ conjugate.irregular :saw, :sawed, :sawed
121
+ conjugate.irregular :say, :said, :said
122
+ conjugate.irregular :see, :saw, :seen
123
+ conjugate.irregular :seek, :sought, :sought
124
+ conjugate.irregular :sell, :sold, :sold
125
+ conjugate.irregular :send, :sent, :sent
126
+ conjugate.irregular :set, :set, :set
127
+ conjugate.irregular :sew, :sewed, :sewed
128
+ conjugate.irregular :shake, :shook, :shaken
129
+ conjugate.irregular :shave, :shaved, :shaved
130
+ conjugate.irregular :shear, :shore, :shorn
131
+ conjugate.irregular :shed, :shed, :shed
132
+ conjugate.irregular :shine, :shone, :shone
133
+ conjugate.irregular :shoe, :shoed, :shoed
134
+ conjugate.irregular :shoot, :shot, :shot
135
+ conjugate.irregular :show, :showed, :showed
136
+ conjugate.irregular :shrink, :shrank, :shrunk
137
+ conjugate.irregular :shut, :shut, :shut
138
+ conjugate.irregular :sing, :sang, :sung
139
+ conjugate.irregular :sink, :sank, :sunk
140
+ conjugate.irregular :sit, :sat, :sat
141
+ conjugate.irregular :sleep, :slept, :slept
142
+ conjugate.irregular :slay, :slew, :slain
143
+ conjugate.irregular :slide, :slid, :slid
144
+ conjugate.irregular :sling, :slung, :slung
145
+ conjugate.irregular :slit, :slit, :slit
146
+ conjugate.irregular :smite, :smote, :smitten
147
+ conjugate.irregular :sow, :sowed, :sowed
148
+ conjugate.irregular :speak, :spoke, :spoken
149
+ conjugate.irregular :speed, :sped, :sped
150
+ conjugate.irregular :spend, :spent, :spent
151
+ conjugate.irregular :spill, :spilled, :spilled
152
+ conjugate.irregular :spin, :spun, :spun
153
+ conjugate.irregular :spit, :spit, :spit
154
+ conjugate.irregular :split, :split, :split
155
+ conjugate.irregular :spread, :spread, :spread
156
+ conjugate.irregular :spring, :sprang, :sprung
157
+ conjugate.irregular :stand, :stood, :stood
158
+ conjugate.irregular :steal, :stole, :stolen
159
+ conjugate.irregular :stick, :stuck, :stuck
160
+ conjugate.irregular :sting, :stung, :stung
161
+ conjugate.irregular :stink, :stank, :stunk
162
+ conjugate.irregular :stride, :strod, :stridden
163
+ conjugate.irregular :strike, :struck, :struck
164
+ conjugate.irregular :string, :strung, :strung
165
+ conjugate.irregular :strive, :strove, :striven
166
+ conjugate.irregular :swear, :swore, :sworn
167
+ conjugate.irregular :sweep, :swept, :swept
168
+ conjugate.irregular :swell, :swelled, :swelled
169
+ conjugate.irregular :swim, :swam, :swum
170
+ conjugate.irregular :swing, :swung, :swung
171
+ conjugate.irregular :take, :took, :taken
172
+ conjugate.irregular :teach, :taught, :taught
173
+ conjugate.irregular :tear, :tore, :torn
174
+ conjugate.irregular :tell, :told, :told
175
+ conjugate.irregular :think, :thought, :thought
176
+ conjugate.irregular :thrive, :thrived, :thrived
177
+ conjugate.irregular :throw, :threw, :thrown
178
+ conjugate.irregular :thrust, :thrust, :thrust
179
+ conjugate.irregular :tread, :trod, :trodden
180
+ conjugate.irregular :understand, :understood, :understood
181
+ conjugate.irregular :uphold, :upheld, :upheld
182
+ conjugate.irregular :upset, :upset, :upset
183
+ conjugate.irregular :wake, :woke, :woken
184
+ conjugate.irregular :wear, :wore, :worn
185
+ conjugate.irregular :weave, :weaved, :weaved
186
+ conjugate.irregular :wed, :wed, :wed
187
+ conjugate.irregular :weep, :wept, :wept
188
+ conjugate.irregular :wind, :wound, :wound
189
+ conjugate.irregular :win, :won, :won
190
+ conjugate.irregular :withhold, :withheld, :withheld
191
+ conjugate.irregular :withstand, :withstood, :withstood
192
+ conjugate.irregular :wring, :wrung, :wrung
193
+ conjugate.irregular :write, :wrote, :written
194
+ conjugate.single_terminal_consonant :abandon
195
+ conjugate.single_terminal_consonant :accouter
196
+ conjugate.single_terminal_consonant :accredit
197
+ conjugate.single_terminal_consonant :adhibit
198
+ conjugate.single_terminal_consonant :administer
199
+ conjugate.single_terminal_consonant :alter
200
+ conjugate.single_terminal_consonant :anchor
201
+ conjugate.single_terminal_consonant :answer
202
+ conjugate.single_terminal_consonant :attrit
203
+ conjugate.single_terminal_consonant :audit
204
+ conjugate.single_terminal_consonant :author
205
+ conjugate.single_terminal_consonant :ballot
206
+ conjugate.single_terminal_consonant :banner
207
+ conjugate.single_terminal_consonant :batten
208
+ conjugate.single_terminal_consonant :bedizen
209
+ conjugate.single_terminal_consonant :bespatter
210
+ conjugate.single_terminal_consonant :betoken
211
+ conjugate.single_terminal_consonant :bewilder
212
+ conjugate.single_terminal_consonant :billet
213
+ conjugate.single_terminal_consonant :blacken
214
+ conjugate.single_terminal_consonant :blither
215
+ conjugate.single_terminal_consonant :blossom
216
+ conjugate.single_terminal_consonant :bother
217
+ conjugate.single_terminal_consonant :brighten
218
+ conjugate.single_terminal_consonant :broaden
219
+ conjugate.single_terminal_consonant :broider
220
+ conjugate.single_terminal_consonant :burden
221
+ conjugate.single_terminal_consonant :caparison
222
+ conjugate.single_terminal_consonant :catalog
223
+ conjugate.single_terminal_consonant :censor
224
+ conjugate.single_terminal_consonant :center
225
+ conjugate.single_terminal_consonant :charter
226
+ conjugate.single_terminal_consonant :chatter
227
+ conjugate.single_terminal_consonant :cheapen
228
+ conjugate.single_terminal_consonant :chipper
229
+ conjugate.single_terminal_consonant :chirrup
230
+ conjugate.single_terminal_consonant :christen
231
+ conjugate.single_terminal_consonant :clobber
232
+ conjugate.single_terminal_consonant :cluster
233
+ conjugate.single_terminal_consonant :coarsen
234
+ conjugate.single_terminal_consonant :cocker
235
+ conjugate.single_terminal_consonant :coedit
236
+ conjugate.single_terminal_consonant :cohabit
237
+ conjugate.single_terminal_consonant :concenter
238
+ conjugate.single_terminal_consonant :corner
239
+ conjugate.single_terminal_consonant :cover
240
+ conjugate.single_terminal_consonant :covet
241
+ conjugate.single_terminal_consonant :cower
242
+ conjugate.single_terminal_consonant :credit
243
+ conjugate.single_terminal_consonant :custom
244
+ conjugate.single_terminal_consonant :dampen
245
+ conjugate.single_terminal_consonant :deafen
246
+ conjugate.single_terminal_consonant :decipher
247
+ conjugate.single_terminal_consonant :deflower
248
+ conjugate.single_terminal_consonant :delimit
249
+ conjugate.single_terminal_consonant :deposit
250
+ conjugate.single_terminal_consonant :develop
251
+ conjugate.single_terminal_consonant :differ
252
+ conjugate.single_terminal_consonant :disaccustom
253
+ conjugate.single_terminal_consonant :discover
254
+ conjugate.single_terminal_consonant :discredit
255
+ conjugate.single_terminal_consonant :disencumber
256
+ conjugate.single_terminal_consonant :dishearten
257
+ conjugate.single_terminal_consonant :disinherit
258
+ conjugate.single_terminal_consonant :dismember
259
+ conjugate.single_terminal_consonant :dispirit
260
+ conjugate.single_terminal_consonant :dither
261
+ conjugate.single_terminal_consonant :dizen
262
+ conjugate.single_terminal_consonant :dodder
263
+ conjugate.single_terminal_consonant :edit
264
+ conjugate.single_terminal_consonant :elicit
265
+ conjugate.single_terminal_consonant :embitter
266
+ conjugate.single_terminal_consonant :embolden
267
+ conjugate.single_terminal_consonant :embosom
268
+ conjugate.single_terminal_consonant :embower
269
+ conjugate.single_terminal_consonant :empoison
270
+ conjugate.single_terminal_consonant :empower
271
+ conjugate.single_terminal_consonant :enamor
272
+ conjugate.single_terminal_consonant :encipher
273
+ conjugate.single_terminal_consonant :encounter
274
+ conjugate.single_terminal_consonant :endanger
275
+ conjugate.single_terminal_consonant :enfetter
276
+ conjugate.single_terminal_consonant :engender
277
+ conjugate.single_terminal_consonant :enlighten
278
+ conjugate.single_terminal_consonant :enter
279
+ conjugate.single_terminal_consonant :envelop
280
+ conjugate.single_terminal_consonant :envenom
281
+ conjugate.single_terminal_consonant :environ
282
+ conjugate.single_terminal_consonant :exhibit
283
+ conjugate.single_terminal_consonant :exit
284
+ conjugate.single_terminal_consonant :fasten
285
+ conjugate.single_terminal_consonant :fatten
286
+ conjugate.single_terminal_consonant :feather
287
+ conjugate.single_terminal_consonant :fester
288
+ conjugate.single_terminal_consonant :filter
289
+ conjugate.single_terminal_consonant :flatten
290
+ conjugate.single_terminal_consonant :flatter
291
+ conjugate.single_terminal_consonant :flounder
292
+ conjugate.single_terminal_consonant :fluster
293
+ conjugate.single_terminal_consonant :flutter
294
+ conjugate.single_terminal_consonant :foreshorten
295
+ conjugate.single_terminal_consonant :founder
296
+ conjugate.single_terminal_consonant :fritter
297
+ conjugate.single_terminal_consonant :gammon
298
+ conjugate.single_terminal_consonant :gather
299
+ conjugate.single_terminal_consonant :gladden
300
+ conjugate.single_terminal_consonant :glimmer
301
+ conjugate.single_terminal_consonant :glisten
302
+ conjugate.single_terminal_consonant :glower
303
+ conjugate.single_terminal_consonant :greaten
304
+ conjugate.single_terminal_consonant :hamper
305
+ conjugate.single_terminal_consonant :hanker
306
+ conjugate.single_terminal_consonant :happen
307
+ conjugate.single_terminal_consonant :harden
308
+ conjugate.single_terminal_consonant :harken
309
+ conjugate.single_terminal_consonant :hasten
310
+ conjugate.single_terminal_consonant :hearten
311
+ conjugate.single_terminal_consonant :hoarsen
312
+ conjugate.single_terminal_consonant :honor
313
+ conjugate.single_terminal_consonant :imprison
314
+ conjugate.single_terminal_consonant :inhabit
315
+ conjugate.single_terminal_consonant :inhibit
316
+ conjugate.single_terminal_consonant :inspirit
317
+ conjugate.single_terminal_consonant :interpret
318
+ conjugate.single_terminal_consonant :iron
319
+ conjugate.single_terminal_consonant :laten
320
+ conjugate.single_terminal_consonant :launder
321
+ conjugate.single_terminal_consonant :lengthen
322
+ conjugate.single_terminal_consonant :liken
323
+ conjugate.single_terminal_consonant :limber
324
+ conjugate.single_terminal_consonant :limit
325
+ conjugate.single_terminal_consonant :linger
326
+ conjugate.single_terminal_consonant :litter
327
+ conjugate.single_terminal_consonant :liven
328
+ conjugate.single_terminal_consonant :loiter
329
+ conjugate.single_terminal_consonant :lollop
330
+ conjugate.single_terminal_consonant :louden
331
+ conjugate.single_terminal_consonant :lower
332
+ conjugate.single_terminal_consonant :lumber
333
+ conjugate.single_terminal_consonant :madden
334
+ conjugate.single_terminal_consonant :malinger
335
+ conjugate.single_terminal_consonant :market
336
+ conjugate.single_terminal_consonant :matter
337
+ conjugate.single_terminal_consonant :misinterpret
338
+ conjugate.single_terminal_consonant :misremember
339
+ conjugate.single_terminal_consonant :monitor
340
+ conjugate.single_terminal_consonant :moulder
341
+ conjugate.single_terminal_consonant :murder
342
+ conjugate.single_terminal_consonant :murmur
343
+ conjugate.single_terminal_consonant :muster
344
+ conjugate.single_terminal_consonant :number
345
+ conjugate.single_terminal_consonant :offer
346
+ conjugate.single_terminal_consonant :open
347
+ conjugate.single_terminal_consonant :order
348
+ conjugate.single_terminal_consonant :outmaneuver
349
+ conjugate.single_terminal_consonant :overmaster
350
+ conjugate.single_terminal_consonant :pamper
351
+ conjugate.single_terminal_consonant :pilot
352
+ conjugate.single_terminal_consonant :pivot
353
+ conjugate.single_terminal_consonant :plaster
354
+ conjugate.single_terminal_consonant :plunder
355
+ conjugate.single_terminal_consonant :powder
356
+ conjugate.single_terminal_consonant :power
357
+ conjugate.single_terminal_consonant :prohibit
358
+ conjugate.single_terminal_consonant :reckon
359
+ conjugate.single_terminal_consonant :reconsider
360
+ conjugate.single_terminal_consonant :recover
361
+ conjugate.single_terminal_consonant :redden
362
+ conjugate.single_terminal_consonant :redeliver
363
+ conjugate.single_terminal_consonant :register
364
+ conjugate.single_terminal_consonant :rejigger
365
+ conjugate.single_terminal_consonant :remember
366
+ conjugate.single_terminal_consonant :renumber
367
+ conjugate.single_terminal_consonant :reopen
368
+ conjugate.single_terminal_consonant :reposit
369
+ conjugate.single_terminal_consonant :rewaken
370
+ conjugate.single_terminal_consonant :richen
371
+ conjugate.single_terminal_consonant :roister
372
+ conjugate.single_terminal_consonant :roughen
373
+ conjugate.single_terminal_consonant :sadden
374
+ conjugate.single_terminal_consonant :savor
375
+ conjugate.single_terminal_consonant :scatter
376
+ conjugate.single_terminal_consonant :scupper
377
+ conjugate.single_terminal_consonant :sharpen
378
+ conjugate.single_terminal_consonant :shatter
379
+ conjugate.single_terminal_consonant :shelter
380
+ conjugate.single_terminal_consonant :shimmer
381
+ conjugate.single_terminal_consonant :shiver
382
+ conjugate.single_terminal_consonant :shorten
383
+ conjugate.single_terminal_consonant :shower
384
+ conjugate.single_terminal_consonant :sicken
385
+ conjugate.single_terminal_consonant :smolder
386
+ conjugate.single_terminal_consonant :smoothen
387
+ conjugate.single_terminal_consonant :soften
388
+ conjugate.single_terminal_consonant :solicit
389
+ conjugate.single_terminal_consonant :squander
390
+ conjugate.single_terminal_consonant :stagger
391
+ conjugate.single_terminal_consonant :stiffen
392
+ conjugate.single_terminal_consonant :stopper
393
+ conjugate.single_terminal_consonant :stouten
394
+ conjugate.single_terminal_consonant :straiten
395
+ conjugate.single_terminal_consonant :strengthen
396
+ conjugate.single_terminal_consonant :stutter
397
+ conjugate.single_terminal_consonant :suffer
398
+ conjugate.single_terminal_consonant :sugar
399
+ conjugate.single_terminal_consonant :summon
400
+ conjugate.single_terminal_consonant :surrender
401
+ conjugate.single_terminal_consonant :swelter
402
+ conjugate.single_terminal_consonant :sypher
403
+ conjugate.single_terminal_consonant :tamper
404
+ conjugate.single_terminal_consonant :tauten
405
+ conjugate.single_terminal_consonant :tender
406
+ conjugate.single_terminal_consonant :thicken
407
+ conjugate.single_terminal_consonant :threaten
408
+ conjugate.single_terminal_consonant :thunder
409
+ conjugate.single_terminal_consonant :totter
410
+ conjugate.single_terminal_consonant :toughen
411
+ conjugate.single_terminal_consonant :tower
412
+ conjugate.single_terminal_consonant :transit
413
+ conjugate.single_terminal_consonant :tucker
414
+ conjugate.single_terminal_consonant :unburden
415
+ conjugate.single_terminal_consonant :uncover
416
+ conjugate.single_terminal_consonant :unfetter
417
+ conjugate.single_terminal_consonant :unloosen
418
+ conjugate.single_terminal_consonant :upholster
419
+ conjugate.single_terminal_consonant :utter
420
+ conjugate.single_terminal_consonant :visit
421
+ conjugate.single_terminal_consonant :vomit
422
+ conjugate.single_terminal_consonant :wander
423
+ conjugate.single_terminal_consonant :water
424
+ conjugate.single_terminal_consonant :weaken
425
+ conjugate.single_terminal_consonant :whiten
426
+ conjugate.single_terminal_consonant :winter
427
+ conjugate.single_terminal_consonant :wonder
428
+ conjugate.single_terminal_consonant :worsen
429
+ end
@@ -0,0 +1,118 @@
1
+ module Verbs
2
+ module Conjugator
3
+ extend self
4
+
5
+ class Conjugations
6
+ include Singleton
7
+
8
+ attr_reader :irregulars, :single_terminal_consonants, :copulars
9
+
10
+ def initialize
11
+ @irregulars, @single_terminal_consonants, @copulars = {}, [], {}
12
+ end
13
+
14
+ def irregular(infinitive, preterite = nil, past_participle = nil, &blk)
15
+ if block_given?
16
+ irregular = ::Verbs::Verb.new infinitive, &blk
17
+ else
18
+ raise ArgumentError, "Standard irregular verbs must specify preterite and past participle forms" unless preterite and past_participle
19
+ irregular = ::Verbs::Verb.new infinitive, :preterite => preterite, :past_participle => past_participle
20
+ end
21
+ @irregulars[infinitive] = irregular
22
+ end
23
+
24
+ def single_terminal_consonant(infinitive)
25
+ @single_terminal_consonants << infinitive
26
+ end
27
+ end
28
+
29
+ def conjugations
30
+ if block_given?
31
+ yield Conjugations.instance
32
+ else
33
+ Conjugations.instance
34
+ end
35
+ end
36
+
37
+ def conjugate(infinitive, options = {})
38
+ tense = options[:tense] || :present
39
+ person = options[:person] || :third
40
+ plurality = options[:plurality] || :singular
41
+ diathesis = options[:diathesis] || :active
42
+ mood = options[:mood] || :indicative
43
+
44
+ if verb = conjugations.irregulars[infinitive]
45
+ verb[options] || conjugate_irregular(verb, options)
46
+ else
47
+ conjugate_regular(infinitive, options)
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def conjugate_irregular(verb, options)
54
+ tense = options[:tense]
55
+ person = options[:person]
56
+ plurality = options[:plurality]
57
+ if [tense, person, plurality] == [:present, :third, :singular]
58
+ present_third_person_singular_form_for verb
59
+ elsif tense == :present
60
+ verb.infinitive
61
+ elsif tense == :past
62
+ verb.preterite
63
+ end
64
+ end
65
+
66
+ def conjugate_regular(verb, options)
67
+ tense = options[:tense]
68
+ person = options[:person]
69
+ plurality = options[:plurality]
70
+ if [tense, person, plurality] == [:present, :third, :singular]
71
+ present_third_person_singular_form_for verb
72
+ elsif tense == :present
73
+ verb
74
+ elsif tense == :past
75
+ regular_preterite_for verb
76
+ end
77
+ end
78
+
79
+ def present_third_person_singular_form_for(verb)
80
+ infinitive = case verb
81
+ when Verb
82
+ verb.infinitive
83
+ when String, Symbol
84
+ verb.to_sym
85
+ end
86
+ if infinitive.to_s.match(/#{CONSONANT_PATTERN}y$/)
87
+ infinitive.to_s.gsub(/y$/, 'ies').to_sym
88
+ elsif infinitive.to_s.match(/[szx]$/) or infinitive.to_s.match(/[sc]h$/)
89
+ infinitive.to_s.concat('es').to_sym
90
+ else
91
+ infinitive.to_s.concat('s').to_sym
92
+ end
93
+ end
94
+
95
+ def regular_preterite_for(verb)
96
+ infinitive = case verb
97
+ when Verb
98
+ verb.infinitive
99
+ when String, Symbol
100
+ verb.to_sym
101
+ end
102
+ if verb.to_s.match(/#{VOWEL_PATTERN}#{CONSONANT_PATTERN}$/) and !conjugations.single_terminal_consonants.include?(verb)
103
+ regular_preterite_with_doubled_terminal_consonant_for verb
104
+ elsif verb.to_s.match(/#{CONSONANT_PATTERN}e$/) or verb.to_s.match(/ye$/) or verb.to_s.match(/oe$/) or verb.to_s.match(/nge$/) or verb.to_s.match(/ie$/) or verb.to_s.match(/ee$/)
105
+ infinitive.to_s.concat('d').to_sym
106
+ elsif verb.to_s.match(/#{CONSONANT_PATTERN}y$/)
107
+ infinitive.to_s.chomp('y').concat('ied').to_sym
108
+ else
109
+ infinitive.to_s.concat('ed').to_sym
110
+ end
111
+ end
112
+
113
+ def regular_preterite_with_doubled_terminal_consonant_for(verb)
114
+ regular_preterite_for verb.to_s.concat(verb.to_s[-1,1]).to_sym
115
+ end
116
+
117
+ end
118
+ end
data/lib/verbs/verb.rb ADDED
@@ -0,0 +1,40 @@
1
+ module Verbs
2
+ class Verb
3
+ attr_reader :infinitive, :preterite
4
+
5
+ def initialize(infinitive, options = {}, &blk)
6
+ @infinitive = infinitive
7
+ @forms = {}
8
+ if block_given?
9
+ yield self
10
+ else
11
+ @preterite = options[:preterite]
12
+ @past_participle = options[:past_participle]
13
+ end
14
+ end
15
+
16
+ def form(word, options = {})
17
+ raise ArgumentError, 'Irregular verb specifications must identify tense and must identify either derivative or person and plurality' unless options[:tense] and (options[:derivative] or (options[:person] and options[:plurality]))
18
+
19
+ tense = options[:tense]
20
+
21
+ @forms[:present] ||= {}
22
+ @forms[:past] ||= {}
23
+ if derivative = options[:derivative]
24
+ @forms[tense][derivative] = word
25
+ elsif person = options[:person]
26
+ @forms[tense][person] ||= {}
27
+ @forms[tense][person][options[:plurality]] = word
28
+ end
29
+ end
30
+
31
+ def [](options = {})
32
+ tense, person, plurality, derivative = options[:tense], options[:person], options[:plurality], options[:derivative]
33
+ if tense and person and plurality
34
+ @forms[tense].andand[person].andand[plurality]
35
+ elsif tense and derivative
36
+ @forms[tense].andand[derivative]
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/verbs.rb ADDED
@@ -0,0 +1,12 @@
1
+ require 'singleton'
2
+ require 'verbs/verb'
3
+ require 'verbs/conjugator'
4
+ require 'verbs/conjugations'
5
+ require 'andand'
6
+
7
+ module Verbs
8
+ CONSONANTS = %w(b c d f g h j k l m n p q r s t v w x z)
9
+ CONSONANT_PATTERN = "[#{CONSONANTS.join}]"
10
+ VOWELS = %w(a e i o u y)
11
+ VOWEL_PATTERN = "[#{VOWELS.join}]"
12
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ require 'verbs'
7
+
8
+ class Test::Unit::TestCase
9
+ end
@@ -0,0 +1,80 @@
1
+ require 'helper'
2
+
3
+ class TestVerbs < Test::Unit::TestCase
4
+ def test_copular_conjugation
5
+ assert_equal :am, Verbs::Conjugator.conjugate(:be, :tense => :present, :person => :first, :plurality => :singular)
6
+ assert_equal :are, Verbs::Conjugator.conjugate(:be, :tense => :present, :person => :second, :plurality => :singular)
7
+ assert_equal :is, Verbs::Conjugator.conjugate(:be, :tense => :present, :person => :third, :plurality => :singular)
8
+ assert_equal :are, Verbs::Conjugator.conjugate(:be, :tense => :present, :person => :first, :plurality => :plural)
9
+ assert_equal :are, Verbs::Conjugator.conjugate(:be, :tense => :present, :person => :third, :plurality => :plural)
10
+ assert_equal :was, Verbs::Conjugator.conjugate(:be, :tense => :past, :person => :first, :plurality => :singular)
11
+ assert_equal :were, Verbs::Conjugator.conjugate(:be, :tense => :past, :person => :second, :plurality => :singular)
12
+ assert_equal :was, Verbs::Conjugator.conjugate(:be, :tense => :past, :person => :third, :plurality => :singular)
13
+ assert_equal :were, Verbs::Conjugator.conjugate(:be, :tense => :past, :person => :first, :plurality => :plural)
14
+ assert_equal :were, Verbs::Conjugator.conjugate(:be, :tense => :past, :person => :third, :plurality => :plural)
15
+ end
16
+ def test_irregular_conjugation
17
+ assert_equal :break, Verbs::Conjugator.conjugate(:break, :tense => :present, :person => :first, :plurality => :singular)
18
+ assert_equal :break, Verbs::Conjugator.conjugate(:break, :tense => :present, :person => :second, :plurality => :singular)
19
+ assert_equal :breaks, Verbs::Conjugator.conjugate(:break, :tense => :present, :person => :third, :plurality => :singular)
20
+ assert_equal :break, Verbs::Conjugator.conjugate(:break, :tense => :present, :person => :first, :plurality => :plural)
21
+ assert_equal :break, Verbs::Conjugator.conjugate(:break, :tense => :present, :person => :third, :plurality => :plural)
22
+ assert_equal :broke, Verbs::Conjugator.conjugate(:break, :tense => :past, :person => :first, :plurality => :singular)
23
+ assert_equal :broke, Verbs::Conjugator.conjugate(:break, :tense => :past, :person => :first, :plurality => :singular)
24
+ assert_equal :broke, Verbs::Conjugator.conjugate(:break, :tense => :past, :person => :first, :plurality => :singular)
25
+ assert_equal :broke, Verbs::Conjugator.conjugate(:break, :tense => :past, :person => :first, :plurality => :singular)
26
+ assert_equal :broke, Verbs::Conjugator.conjugate(:break, :tense => :past, :person => :first, :plurality => :singular)
27
+ end
28
+ def test_irregular_conjugation_with_terminal_y
29
+ assert_equal :flies, Verbs::Conjugator.conjugate(:fly, :tense => :present, :person => :third, :plurality => :singular)
30
+ assert_equal :carried, Verbs::Conjugator.conjugate(:carry, :tense => :past, :person => :third, :plurality => :singular)
31
+ assert_equal :stayed, Verbs::Conjugator.conjugate(:stay, :tense => :past, :person => :third, :plurality => :singular)
32
+ end
33
+ def test_regular_conjugation
34
+ assert_equal :accept, Verbs::Conjugator.conjugate(:accept, :tense => :present, :person => :first, :plurality => :singular)
35
+ assert_equal :accept, Verbs::Conjugator.conjugate(:accept, :tense => :present, :person => :second, :plurality => :singular)
36
+ assert_equal :accepts, Verbs::Conjugator.conjugate(:accept, :tense => :present, :person => :third, :plurality => :singular)
37
+ assert_equal :accept, Verbs::Conjugator.conjugate(:accept, :tense => :present, :person => :first, :plurality => :plural)
38
+ assert_equal :accept, Verbs::Conjugator.conjugate(:accept, :tense => :present, :person => :third, :plurality => :plural)
39
+ assert_equal :accepted, Verbs::Conjugator.conjugate(:accept, :tense => :past, :person => :first, :plurality => :singular)
40
+ assert_equal :accepted, Verbs::Conjugator.conjugate(:accept, :tense => :past, :person => :first, :plurality => :singular)
41
+ assert_equal :accepted, Verbs::Conjugator.conjugate(:accept, :tense => :past, :person => :first, :plurality => :singular)
42
+ assert_equal :accepted, Verbs::Conjugator.conjugate(:accept, :tense => :past, :person => :first, :plurality => :singular)
43
+ assert_equal :accepted, Verbs::Conjugator.conjugate(:accept, :tense => :past, :person => :first, :plurality => :singular)
44
+ end
45
+ def test_regular_conjugation_with_terminal_single_consonant
46
+ assert_equal :shipped, Verbs::Conjugator.conjugate(:ship, :tense => :past, :person => :first, :plurality => :singular)
47
+ assert_equal :shipped, Verbs::Conjugator.conjugate(:ship, :tense => :past, :person => :first, :plurality => :singular)
48
+ assert_equal :shipped, Verbs::Conjugator.conjugate(:ship, :tense => :past, :person => :first, :plurality => :singular)
49
+ assert_equal :shipped, Verbs::Conjugator.conjugate(:ship, :tense => :past, :person => :first, :plurality => :singular)
50
+ assert_equal :shipped, Verbs::Conjugator.conjugate(:ship, :tense => :past, :person => :first, :plurality => :singular)
51
+ end
52
+ def test_regular_conjugation_with_irregular_terminal_consonant
53
+ assert_equal :abandoned, Verbs::Conjugator.conjugate(:abandon, :tense => :past, :person => :first, :plurality => :singular)
54
+ assert_equal :abandoned, Verbs::Conjugator.conjugate(:abandon, :tense => :past, :person => :first, :plurality => :singular)
55
+ assert_equal :abandoned, Verbs::Conjugator.conjugate(:abandon, :tense => :past, :person => :first, :plurality => :singular)
56
+ assert_equal :abandoned, Verbs::Conjugator.conjugate(:abandon, :tense => :past, :person => :first, :plurality => :singular)
57
+ assert_equal :abandoned, Verbs::Conjugator.conjugate(:abandon, :tense => :past, :person => :first, :plurality => :singular)
58
+ end
59
+ def test_regular_conjugation_with_terminal_e
60
+ assert_equal :created, Verbs::Conjugator.conjugate(:create, :tense => :past, :person => :first, :plurality => :singular)
61
+ assert_equal :created, Verbs::Conjugator.conjugate(:create, :tense => :past, :person => :first, :plurality => :singular)
62
+ assert_equal :created, Verbs::Conjugator.conjugate(:create, :tense => :past, :person => :first, :plurality => :singular)
63
+ assert_equal :created, Verbs::Conjugator.conjugate(:create, :tense => :past, :person => :first, :plurality => :singular)
64
+ assert_equal :created, Verbs::Conjugator.conjugate(:create, :tense => :past, :person => :first, :plurality => :singular)
65
+ end
66
+ def test_regular_conjugation_with_unusual_terminal_e
67
+ assert_equal :dyed, Verbs::Conjugator.conjugate(:dye, :tense => :past, :person => :first, :plurality => :singular)
68
+ assert_equal :hoed, Verbs::Conjugator.conjugate(:hoe, :tense => :past, :person => :first, :plurality => :singular)
69
+ assert_equal :singed, Verbs::Conjugator.conjugate(:singe, :tense => :past, :person => :first, :plurality => :singular)
70
+ assert_equal :tied, Verbs::Conjugator.conjugate(:tie, :tense => :past, :person => :first, :plurality => :singular)
71
+ assert_equal :agreed, Verbs::Conjugator.conjugate(:agree, :tense => :past, :person => :first, :plurality => :singular)
72
+ end
73
+ def test_conjugation_with_terminal_sibilance
74
+ assert_equal :passes, Verbs::Conjugator.conjugate(:pass, :tense => :present, :person => :third, :plurality => :singular)
75
+ assert_equal :buzzes, Verbs::Conjugator.conjugate(:buzz, :tense => :present, :person => :third, :plurality => :singular)
76
+ assert_equal :coaxes, Verbs::Conjugator.conjugate(:coax, :tense => :present, :person => :third, :plurality => :singular)
77
+ assert_equal :washes, Verbs::Conjugator.conjugate(:wash, :tense => :present, :person => :third, :plurality => :singular)
78
+ assert_equal :watches, Verbs::Conjugator.conjugate(:watch, :tense => :present, :person => :third, :plurality => :singular)
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: verbs
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Andy Rossmeissl
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-25 00:00:00 -05:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Conjugates most common english verbs for all persons in present and past tense (active diathesis, indicative mood). Standard and exceptional spelling rules are obeyed.
17
+ email: andy@rossmeissl.net
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - LICENSE
24
+ - README.rdoc
25
+ files:
26
+ - .document
27
+ - .gitignore
28
+ - LICENSE
29
+ - README.rdoc
30
+ - Rakefile
31
+ - VERSION
32
+ - lib/verbs.rb
33
+ - lib/verbs/conjugations.rb
34
+ - lib/verbs/conjugator.rb
35
+ - lib/verbs/verb.rb
36
+ - test/helper.rb
37
+ - test/test_verbs.rb
38
+ has_rdoc: true
39
+ homepage: http://github.com/rossmeissl/verbs
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options:
44
+ - --charset=UTF-8
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ version:
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.3.5
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: English verb conjugation in Ruby
66
+ test_files:
67
+ - test/helper.rb
68
+ - test/test_verbs.rb