verbs 2.2.1 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46ce7e5cfe62a82289b8c7770e9bf9905106d776c960a309007b41782bf1b6fa
4
- data.tar.gz: f92d5047b6743da58b2669744fd04e6400e913c2c7221b83f657b8f2f39cef25
3
+ metadata.gz: 39ca9a05484aea9907d487a1fd2d6c51bbe969040ae748411640076ae9cb4b50
4
+ data.tar.gz: fd81415cc5cad33a4ae06c1e7b45d26edb64bfc94acbf2fc2c0e29f576a228c1
5
5
  SHA512:
6
- metadata.gz: aff4a218c912eaa3266f416e79b2de1420179e3c282ef30777d155a84560d83cade09d850a85ae546a8f52f714372cd7a1a2f4daa4140e52c68dd24da757221b
7
- data.tar.gz: '0798baa0c945dad303ac4c8c569f7a7d30bd55faa50d40f09168983ed4868ea18d214f55dea71a6f81336bec04f64a0b1a6a58eee11bfec8e2d65b11322974fc'
6
+ metadata.gz: 81bc1a48d71745e5443985abc0a7bb14c9e5548820eb1fa8c6455d81a14baa2928009a07a00e4d6561fac7afdfa3ba313b1e610a8af14e949c505fa6ec7f27cf
7
+ data.tar.gz: c16c9318396e3edf0f9b13c78f8c9e84e35bed61bc9fd05714e9009022e2df79c59b1d5057cbeafd22a8bda172c9292d15a35773e2b281f0753cc68c6552f66f
@@ -15,16 +15,12 @@ on:
15
15
 
16
16
  jobs:
17
17
  test:
18
-
19
18
  runs-on: ubuntu-latest
20
19
 
21
20
  steps:
22
21
  - uses: actions/checkout@v2
23
22
  - name: Set up Ruby
24
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
25
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
26
- # uses: ruby/setup-ruby@v1
27
- uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
23
+ uses: ruby/setup-ruby@v1
28
24
  with:
29
25
  ruby-version: 2.6
30
26
  - name: Install dependencies
data/.gitignore CHANGED
@@ -17,6 +17,8 @@ tmtags
17
17
  coverage
18
18
  rdoc
19
19
  pkg
20
+ vendor
21
+ .bundle
20
22
 
21
23
  ## PROJECT::SPECIFIC
22
24
  Gemfile.lock
@@ -43,6 +43,10 @@ One of <tt>:indicative</tt>, <tt>:imperative</tt>, or <tt>:subjunctive</tt>. Def
43
43
 
44
44
  Set this to a string to prepend the conjugated verb with it. When set to <tt>true</tt>, a standard personal pronoun will be used.
45
45
 
46
+ === <tt>:diathesis</tt>
47
+
48
+ One of <tt>:active</tt> or <tt>:passive</tt>. Defaults to <tt>:active</tt>.
49
+
46
50
  == Tense/aspect quick reference
47
51
 
48
52
  EXAMPLE TENSE ASPECT
@@ -71,6 +75,7 @@ Set this to a string to prepend the conjugated verb with it. When set to <tt>tru
71
75
  * {Pat Byrd and Tom McKlin}[http://www2.gsu.edu/~wwwesl/egw/pluralsv.htm]
72
76
  * {Rick Harrison}[http://www.rickharrison.com/language/aspect.html]
73
77
  * {Anatoli Makarevich}[https://github.com/makaroni4] for {#6}[https://github.com/rossmeissl/verbs/pull/6]
78
+ * {Nikita Kamaev}[https://github.com/nerixim] for {#35}[https://github.com/rossmeissl/verbs/pull/35]
74
79
 
75
80
  == Copyright
76
81
 
@@ -79,8 +79,8 @@ module Verbs
79
79
  mood = options[:mood] || :indicative # imperative, subjunctive
80
80
  aspect = options[:aspect] || :habitual # perfective, habitual, progressive, perfect, prospective
81
81
 
82
- check_for_improper_constructions(tense, person, mood) # find incompatabilities
83
- form = form_for(tense, aspect) # find form array based on tense and aspect
82
+ check_for_improper_constructions(infinitive, tense, person, mood, diathesis) # find incompatabilities
83
+ form = form_for(tense, aspect, diathesis) # find form array based on tense and aspect
84
84
 
85
85
  # map form array to conjugation array, applying infinitive and options to the array
86
86
  conjugation = form.map { |e| resolve e, infinitive, tense, person, plurality, mood }.join(' ').strip
@@ -275,23 +275,41 @@ module Verbs
275
275
  # Params:
276
276
  # * tense, an option given by the user
277
277
  # * aspect, an option given by the user
278
- def form_for(tense, aspect)
278
+ # * diathesis, an option given by the user
279
+ def form_for(tense, aspect, diathesis)
279
280
  form = []
280
- if tense == :future
281
- form << 'will'
282
- form << :infinitive if aspect == :habitual
283
- form.concat ['have', :past_participle] if aspect == :perfect
284
- form.concat ['be having', :past_participle] if aspect == :perfective
285
- form.concat ['be', :present_participle] if aspect == :progressive
286
- form.concat ['be about to', :infinitive] if aspect == :prospective
287
- else
288
- form.concat ['used to', :infinitive] if [tense, aspect] == [:past, :habitual]
289
- form.concat [:have, :past_participle] if aspect == :perfect
290
- form << :past if [tense, aspect] == [:past, :perfective]
291
- form.concat [:be, :present_participle] if aspect == :progressive
292
- form.concat [:be, 'about to', :infinitive] if aspect == :prospective
293
- form << :present if [tense, aspect] == [:present, :habitual]
294
- form.concat [:be, 'having', :past_participle] if [tense, aspect] == [:present, :perfective]
281
+ if diathesis == :active
282
+ if tense == :future
283
+ form << 'will'
284
+ form << :infinitive if aspect == :habitual
285
+ form.concat ['have', :past_participle] if aspect == :perfect
286
+ form.concat ['be having', :past_participle] if aspect == :perfective
287
+ form.concat ['be', :present_participle] if aspect == :progressive
288
+ form.concat ['be about to', :infinitive] if aspect == :prospective
289
+ else
290
+ form.concat ['used to', :infinitive] if [tense, aspect] == [:past, :habitual]
291
+ form.concat [:have, :past_participle] if aspect == :perfect
292
+ form << :past if [tense, aspect] == [:past, :perfective]
293
+ form.concat [:be, :present_participle] if aspect == :progressive
294
+ form.concat [:be, 'about to', :infinitive] if aspect == :prospective
295
+ form << :present if [tense, aspect] == [:present, :habitual]
296
+ form.concat [:be, 'having', :past_participle] if [tense, aspect] == [:present, :perfective]
297
+ end
298
+ elsif diathesis == :passive
299
+ if tense == :future
300
+ form << 'will'
301
+ form.concat ['be', :past_participle] if aspect == :habitual
302
+ form.concat ['have been', :past_participle] if aspect == :perfect
303
+ form.concat ['be being', :past_participle] if aspect == :progressive
304
+ form.concat ['be about to be', :past_participle] if aspect == :prospective
305
+ else
306
+ form.concat ['used to be', :past_participle] if [tense, aspect] == [:past, :habitual]
307
+ form.concat [:have, 'been', :past_participle] if aspect == :perfect
308
+ form.concat [:be, :past_participle] if [tense, aspect] == [:past, :perfective]
309
+ form.concat [:be, 'being', :past_participle] if aspect == :progressive
310
+ form.concat [:be, 'about to be', :past_participle] if aspect == :prospective
311
+ form.concat [:be, :past_participle] if [tense, aspect] == [:present, :habitual]
312
+ end
295
313
  end
296
314
  form
297
315
  end
@@ -301,10 +319,14 @@ module Verbs
301
319
  # * tense, an option given by the user
302
320
  # * person, how the conjugation refers to the subject
303
321
  # * mood, an option given by the user
304
- def check_for_improper_constructions(tense, person, mood)
322
+ # * diathesis, an option given by the user
323
+ def check_for_improper_constructions(infinitive, tense, person, mood, diathesis)
305
324
  if mood == :imperative and not (person == :second and tense == :present)
306
325
  raise Verbs::ImproperConstruction, 'The imperative mood requires present tense and second person'
307
326
  end
327
+ if infinitive.to_sym == :be and diathesis == :passive
328
+ raise Verbs::ImproperConstruction, 'There is no passive diathesis for the copula'
329
+ end
308
330
  end
309
331
  end
310
332
  end
@@ -1,3 +1,3 @@
1
1
  module Verbs
2
- VERSION = "2.2.1"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -174,4 +174,42 @@ class TestVerbs < Test::Unit::TestCase
174
174
  assert_equal 'You were about to accept', standard.conjugate(:accept, :tense => :past, :aspect => :prospective)
175
175
  end
176
176
  end
177
+
178
+ def test_passive
179
+ Verbs::Conjugator.with_options :diathesis => :passive, :person => :first, :plurality => :singular, :subject => true do |standard|
180
+ assert_equal 'I used to be accepted', standard.conjugate(:accept, :tense => :past, :aspect => :habitual)
181
+ assert_equal 'I had been accepted', standard.conjugate(:accept, :tense => :past, :aspect => :perfect)
182
+ assert_equal 'I was accepted', standard.conjugate(:accept, :tense => :past, :aspect => :perfective)
183
+ assert_equal 'I was being accepted', standard.conjugate(:accept, :tense => :past, :aspect => :progressive)
184
+ assert_equal 'I was about to be accepted', standard.conjugate(:accept, :tense => :past, :aspect => :prospective)
185
+ assert_equal 'I am accepted', standard.conjugate(:accept, :tense => :present, :aspect => :habitual)
186
+ assert_equal 'I have been accepted', standard.conjugate(:accept, :tense => :present, :aspect => :perfect)
187
+ assert_equal 'I am being accepted', standard.conjugate(:accept, :tense => :present, :aspect => :progressive)
188
+ assert_equal 'I am about to be accepted', standard.conjugate(:accept, :tense => :present, :aspect => :prospective)
189
+ assert_equal 'I will be accepted', standard.conjugate(:accept, :tense => :future, :aspect => :habitual)
190
+ assert_equal 'I will have been accepted', standard.conjugate(:accept, :tense => :future, :aspect => :perfect)
191
+ assert_equal 'I will be being accepted', standard.conjugate(:accept, :tense => :future, :aspect => :progressive)
192
+ assert_equal 'I will be about to be accepted', standard.conjugate(:accept, :tense => :future, :aspect => :prospective)
193
+ end
194
+
195
+ Verbs::Conjugator.with_options :diathesis => :passive, :person => :third, :plurality => :plural, :subject => true do |standard|
196
+ assert_equal 'They used to be accepted', standard.conjugate(:accept, :tense => :past, :aspect => :habitual)
197
+ assert_equal 'They had been accepted', standard.conjugate(:accept, :tense => :past, :aspect => :perfect)
198
+ assert_equal 'They were accepted', standard.conjugate(:accept, :tense => :past, :aspect => :perfective)
199
+ assert_equal 'They were being accepted', standard.conjugate(:accept, :tense => :past, :aspect => :progressive)
200
+ assert_equal 'They were about to be accepted', standard.conjugate(:accept, :tense => :past, :aspect => :prospective)
201
+ assert_equal 'They are accepted', standard.conjugate(:accept, :tense => :present, :aspect => :habitual)
202
+ assert_equal 'They have been accepted', standard.conjugate(:accept, :tense => :present, :aspect => :perfect)
203
+ assert_equal 'They are being accepted', standard.conjugate(:accept, :tense => :present, :aspect => :progressive)
204
+ assert_equal 'They are about to be accepted', standard.conjugate(:accept, :tense => :present, :aspect => :prospective)
205
+ assert_equal 'They will be accepted', standard.conjugate(:accept, :tense => :future, :aspect => :habitual)
206
+ assert_equal 'They will have been accepted', standard.conjugate(:accept, :tense => :future, :aspect => :perfect)
207
+ assert_equal 'They will be being accepted', standard.conjugate(:accept, :tense => :future, :aspect => :progressive)
208
+ assert_equal 'They will be about to be accepted', standard.conjugate(:accept, :tense => :future, :aspect => :prospective)
209
+ end
210
+
211
+ assert_raise Verbs::ImproperConstruction do
212
+ Verbs::Conjugator.conjugate(:be, :diathesis => :passive)
213
+ end
214
+ end
177
215
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verbs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Rossmeissl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-25 00:00:00.000000000 Z
11
+ date: 2020-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-unit
@@ -81,7 +81,6 @@ files:
81
81
  - LICENSE
82
82
  - README.rdoc
83
83
  - Rakefile
84
- - VERSION
85
84
  - lib/verbs.rb
86
85
  - lib/verbs/conjugations.rb
87
86
  - lib/verbs/conjugator.rb
@@ -110,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
109
  - !ruby/object:Gem::Version
111
110
  version: '0'
112
111
  requirements: []
113
- rubygems_version: 3.0.1
112
+ rubygems_version: 3.1.2
114
113
  signing_key:
115
114
  specification_version: 4
116
115
  summary: English verb conjugation in Ruby
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 2.0.10