latinverb 0.2.0 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/.gitignore +0 -1
  2. data/Gemfile +1 -2
  3. data/README.markdown +54 -240
  4. data/etc/irreg_skel.json +104 -0
  5. data/{latinirb.gemspec → latinverb.gemspec} +4 -4
  6. data/lib/latinverb/chart.rb +94 -0
  7. data/lib/latinverb/version.rb +10 -0
  8. data/lib/latinverb.rb +710 -0
  9. data/lib/linguistics/latin/verb/classification_types.rb +59 -0
  10. data/lib/linguistics/latin/verb/constants.rb +201 -0
  11. data/lib/linguistics/latin/verb/deponent_tense_methods.rb +98 -0
  12. data/lib/linguistics/latin/verb/infinitives.rb +212 -0
  13. data/lib/linguistics/latin/verb/irregulars.rb +4393 -0
  14. data/lib/linguistics/latin/verb/latinverb/auxiliary_classes.rb +208 -0
  15. data/lib/linguistics/latin/verb/latinverb/classmethods.rb +215 -0
  16. data/lib/linguistics/latin/verb/latinverb/data.rb +90 -0
  17. data/lib/linguistics/latin/verb/latinverb/display.rb +23 -0
  18. data/lib/linguistics/latin/verb/latinverb/metaprogramming.rb +79 -0
  19. data/lib/linguistics/latin/verb/latinverb/validation.rb +66 -0
  20. data/lib/linguistics/latin/verb/participles.rb +202 -0
  21. data/lib/linguistics/latin/verb/phonographia.rb +109 -0
  22. data/lib/linguistics/latin/verb/supine.rb +42 -0
  23. data/lib/linguistics/latin/verb/tense_methods.rb +950 -0
  24. data/test/testAmbiguousLookups.rb +30 -0
  25. data/test/testClusterResolution.rb +20 -0
  26. data/test/testDataStructures.rb +29 -0
  27. data/test/testDefectSemiImp.rb +111 -0
  28. data/test/testDeponentFirstConjugation.rb +64 -0
  29. data/test/testDeponentFourthConjugation.rb +64 -0
  30. data/test/testDeponentSecondConjugation.rb +64 -0
  31. data/test/testDeponentThirdConjugation.rb +64 -0
  32. data/test/testDeponentThirdIOConjugation.rb +64 -0
  33. data/test/testDeserializeInfinitives.rb +38 -0
  34. data/test/testFirstConjugation.rb +388 -0
  35. data/test/testFourthConjugation.rb +190 -0
  36. data/test/testFreakishVerbs.rb +93 -0
  37. data/test/testImperativeBlock.rb +27 -0
  38. data/test/testIrregularSum.rb +22 -0
  39. data/test/testIrregulars.rb +652 -0
  40. data/test/testLatinVerb.rb +195 -0
  41. data/test/testMacronRules.rb +19 -0
  42. data/test/testSecondConjugation.rb +189 -0
  43. data/test/testThirdConjugation.rb +190 -0
  44. data/test/testThirdIOConjugation.rb +190 -0
  45. metadata +70 -18
  46. data/bin/latinirb.rb +0 -7
  47. data/latinverb.rb +0 -544
  48. data/lib/LatinIRB.rb +0 -172
  49. data/lib/latinirb/paradigmatic_verbs.rb +0 -17
  50. data/lib/latinirb/version.rb +0 -10
  51. data/lib/latirb.rb +0 -20
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+ module Linguistics
3
+ module Latin
4
+ module Verb
5
+ =begin rdoc
6
+
7
+ == NAME
8
+
9
+ VerbTypes
10
+
11
+ == DESCRIPTION
12
+
13
+ A VerbType is a parent, _conceptually abstract_ class for tracking
14
+ classifications of verbs. At the present time it is an empty class. It is
15
+ foreseeable, however, that in the future, it may be advantagous to associate
16
+ specific behaviors to it. It is subclassed into the various types of Verbs
17
+ identified in Latin pedagogy: First, Second, Third, ThirdIO, Fourth,
18
+ Irregular, and Deponent. These classes, effectively, behave as strings as
19
+ attributes to the classification attribute within a LatinVerb.
20
+
21
+ VerbTypes, therefore, is the module containing these VerbTypes.
22
+
23
+ =end
24
+ module VerbTypes
25
+ ##
26
+ #--
27
+ # == DESCRIPTION
28
+ #
29
+ # Abstract ancestor class that defines the various subclass Verb Types
30
+ # ++
31
+ #
32
+ ##
33
+ class VerbType # :nodoc:
34
+ end
35
+ class First < VerbType # :nodoc:
36
+ end
37
+ class Second < VerbType # :nodoc:
38
+ end
39
+ class Third < VerbType # :nodoc:
40
+ end
41
+ class ThirdIO < VerbType # :nodoc:
42
+ end
43
+ class Fourth < VerbType # :nodoc:
44
+ end
45
+ class Irregular < VerbType # :nodoc:
46
+ end
47
+ class Deponent < VerbType # :nodoc:
48
+ end
49
+ class Defective < VerbType # :nodoc:
50
+ end
51
+ class Impersonal < VerbType # :nodoc:
52
+ end
53
+ class Semideponent < VerbType # :nodoc:
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
@@ -0,0 +1,201 @@
1
+ # encoding: UTF-8
2
+ module Linguistics
3
+ module Latin
4
+ module Verb
5
+ class LatinVerb
6
+ # :stopdoc:
7
+ # active_present_endings: ("ap_"-prefixed)
8
+ AP_FIRST_AND_SECOND_CONJUG_PERS_ENDINGS = %w(s t mus tis nt)
9
+ AP_THIRD_CONJUG_PERS_ENDINGS = %w(ō is it imus itis unt)
10
+ AP_THIRDIO_CONJG_PERS_ENDINGS = %w(is it imus itis iunt)
11
+
12
+ # active_imperfect_endings: ("ai_"-prefixed)
13
+ AI_FIRST_AND_SECOND_CONJUG_PERS_ENDINGS = %w(bam bās bat bāmus bātis bant)
14
+ AI_THIRD_CONJUG_PERS_ENDINGS = %w(ēbam ēbās ēbat ēbāmus ēbātis ēbant)
15
+
16
+ # active_future_endings: ("af_"-prefixed)
17
+ AF_ONE_TWO_ENDINGS = %w(bō bis bit bimus bitis bunt)
18
+ AF_OTHER_ENDINGS = %w(am ēs et ēmus ētis ent)
19
+
20
+ # active_perfect_present: ("aperf"-prefixed)
21
+ APERF_ENDINGS = %w(istī it imus istis ērunt)
22
+ APERF_PAST_ENDINGS = PLUPERF_ENDINGS =
23
+ %w(eram erās erat erāmus erātis erant)
24
+ APERF_FUTURE_ENDINGS = %w(erō eris erit erimus eritis erint)
25
+
26
+ # passive endings
27
+ PASSIVE_ENDINGS_FIRST_AND_SECOND_CONJG =
28
+ %w(r ris tur mur minī ntur)
29
+ PASSIVE_ENDINGS_OTHER =
30
+ %w(r eris itur imur iminī untur)
31
+
32
+ PASS_PERF_PRESENT_ENDINGS = %w(sum es est sumus estis sunt)
33
+ PASS_PERF_PAST_ENDINGS = %w(eram erās erat erāmus erātis erant)
34
+ PASS_PERF_FUTURE_ENDINGS = %w(erō eris erit erimus eritis erint)
35
+
36
+ PASS_PERF_SUBJ_ENDINGS = %w(sim sis sit simus sitis sint)
37
+ PASS_PLUPERF_PAST_ENDINGS = %w(essem essēs esset essēmus essētis essent)
38
+
39
+ # subjunctive tools
40
+ # hash for getting a verb's subjunctive stem
41
+ # based off the W[e] F[ea]r [A] L[ia]r mnemonic
42
+ ACTIVE_PRESENT_SUBJUNCTIVE_ENDINGS = {
43
+ :First => lambda { |x| return x + "ē" },
44
+ :Second => lambda { |x| return x + "eā" },
45
+ :Third => lambda { |x| return x + "ā" },
46
+ :Fourth => lambda { |x| return x + "iā" },
47
+ :ThirdIO => lambda { |x| return x + "iā" }
48
+ }
49
+
50
+ # Listing of all defective verbs
51
+ # See A&G Sec. 205
52
+ DEFECTIVE_VERBS = %w{
53
+ addormisco
54
+ adolesco
55
+ aio
56
+ albesco
57
+ arboresco
58
+ aresco
59
+ assenesco
60
+ auresco
61
+ candesco
62
+ canesco
63
+ celebresco
64
+ cornesco
65
+ crudesco
66
+ dulcesco
67
+ effor
68
+ erubesco
69
+ extollo
70
+ grandesco
71
+ inquam
72
+ languesco
73
+ latesco
74
+ longisco
75
+ lucesco
76
+ marcesco
77
+ matresco
78
+ mollesco
79
+ remollesco
80
+ siccesco
81
+ sterto
82
+ tenebresco
83
+ tremesco
84
+ tumesco
85
+ veteresco
86
+ }
87
+
88
+ # Listing of all impersonal verbs
89
+ # See A&G #207
90
+ IMPERSONAL_VERBS = %w{
91
+ accidit
92
+ addecet
93
+ advesperascit
94
+ certum est
95
+ condecet
96
+ constat
97
+ contingit
98
+ cōnstat
99
+ decet
100
+ dedecet
101
+ dēlecat
102
+ evenit
103
+ fit
104
+ fulgerat
105
+ grandinat
106
+ ifvat
107
+ interest
108
+ licet
109
+ lūcīscit hōc
110
+ miseret
111
+ necesse est
112
+ ningit
113
+ obtingit
114
+ obvenit
115
+ oportet
116
+ paenitet
117
+ piget
118
+ placet
119
+ pluit
120
+ pluo
121
+ praestat
122
+ pudet
123
+ restat
124
+ rēfert
125
+ rōrat
126
+ superest
127
+ taedet
128
+ tonat
129
+ vacat
130
+ vesperāscit
131
+ vidētur
132
+ ēvenit
133
+ }
134
+
135
+ # Present system only. See A&G206
136
+ # There are probably more of these, but A&G only lists these two.
137
+ PRESENT_ONLY = %w{
138
+ maēre
139
+ ferīre
140
+ aiō
141
+ inquam
142
+ for
143
+ quaesō
144
+ ovāre
145
+ }
146
+
147
+ # See A&G # 192
148
+ SEMI_DEPONENTS = {
149
+ 'audeō' => %w(audēre ausus),
150
+ 'fidō' => %w(fidere fīsus),
151
+ 'gaudeō' => %w(gaudēre gāvīsus),
152
+ 'soleō' => %w(solēre solitus),
153
+ }
154
+
155
+ # Irregular Verbs. See A&G 197
156
+ IRREGULAR_VERBS = {
157
+ 'sum' => 'SUM_ESSE_FUĪ_FUTŪRUS',
158
+ 'possum' => 'POSSUM_POSSE_POTUĪ',
159
+ 'ferō' => 'FERŌ_FERRE_TULĪ_LĀTUM',
160
+ 'eō' => 'EŌ_ĪRE_IVĪ_ITUM',
161
+ 'nōlō' => 'NŌLŌ_NŌLLE_NŌLUĪ',
162
+ 'volō' => 'VOLŌ_VELLE_VOLUĪ',
163
+ 'mālō' => 'MĀLŌ_MĀLLE_MĀLUĪ',
164
+ 'dō' => 'DŌ_DĀRE_DEDĪ_DATUM',
165
+ 'edō' => 'EDŌ_ĒSSE_ĒDĪ_ĒSUM',
166
+ 'queō' => 'QUEŌ_QUĪRE_QUĪVĪ',
167
+ 'fiō' => 'FIŌ_FIĒRĪ_FACTUS',
168
+ 'prōsum' => 'PRŌSUM_PRŌDESSE_PRŌFUĪ_PRŌFUTŪRUS',
169
+ 'meminī' => 'MEMINĪ_MEMINISSE',
170
+ 'ōdī' => 'ODĪ_ŌDISSE',
171
+ 'coepī' => 'COEPĪ_COEPISSE_COEPTUM'
172
+ }
173
+
174
+ MEANINGS = {
175
+ :active_voice_imperative_mood_future_tense => "Command that something be done in the future",
176
+ :active_voice_indicative_mood_future_tense=> "Action to take place in the future: 'I will eat a hamburger.'" ,
177
+ :active_voice_indicative_mood_futureperfect_tense => "Action to be completed in the future: 'I will have eaten a hamburger.'" ,
178
+ :active_voice_indicative_mood_imperfect_tense => "Sustained, habitual action in the past: 'I was eating hamburgers daily when I was a freshman.'" ,
179
+ :active_voice_indicative_mood_pastperfect_tense => "Action completed prior to a point in the past under discussion: 'I had eaten all the hamburgers (before my mother found out).'" ,
180
+ :active_voice_indicative_mood_perfect_tense => "Action completed in the past: 'I ate a hamburger.'" ,
181
+ :active_voice_indicative_mood_present_tense => "Present, possibly ongoing action relative to the speaker: 'I am eating a hamburger. I eat a hamburger.'" ,
182
+ :active_voice_subjunctive_mood_imperfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
183
+ :active_voice_subjunctive_mood_pastperfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
184
+ :active_voice_subjunctive_mood_perfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
185
+ :active_voice_subjunctive_mood_present_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
186
+ :passive_voice_indicative_mood_future_tense => "Action to be performed on conjugant in future: 'The hamburger will be eaten.'" ,
187
+ :passive_voice_indicative_mood_futureperfect_tense => "Action is to be performed to completion on conjugant in future: 'The hamburger will have been eaten.'" ,
188
+ :passive_voice_indicative_mood_imperfect_tense => "Habitual action performed on the conjugant in the past: 'The hamburger was being eaten slowly by the BurgerHoarder.'" ,
189
+ :passive_voice_indicative_mood_pastperfect_tense => "Action was fully completed upon the conjugant at a time prior to a time in the past: 'The hamburger had been eaten before my mom came home.'" ,
190
+ :passive_voice_indicative_mood_perfect_tense => "Action was completed upon the conjugant in the past: 'The hamburger was eaten.'" ,
191
+ :passive_voice_indicative_mood_present_tense => "Conjugant is presently undergoing action in the present time: 'The hamburger is being eaten.'" ,
192
+ :passive_voice_subjunctive_mood_imperfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
193
+ :passive_voice_subjunctive_mood_pastperfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
194
+ :passive_voice_subjunctive_mood_perfect_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc." ,
195
+ :passive_voice_subjunctive_mood_present_tense => "Subjunctive uses apply: commands, contrary to fact wishes, etc."
196
+ }
197
+ # :startdoc:
198
+ end
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,98 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'linguistics/latin/verb/phonographia'
4
+ require 'linguistics/latin/verb/latinverb/auxiliary_classes'
5
+ require 'linguistics/latin/verb/deponent_tense_methods'
6
+ require 'yaml'
7
+
8
+ module Linguistics
9
+ module Latin
10
+ module Verb
11
+ ##
12
+ #
13
+ # Applies mutations to the method calls for semi-deponents.
14
+ # Reference A&G 192:
15
+ #
16
+ # "A few verbs having no perfect stem are regular in the present, but
17
+ # appear in the tenses of completed action as deponents. These are
18
+ # called Semi-deponents."
19
+ ##
20
+ module DeponentTenseMethods
21
+ # There's really no good reason that these should be re-defined here,
22
+ # the methods that result from the verbector operation should be
23
+ # sufficient. The only snare is that if you look at the method call
24
+ # in =tense_methods.rb=, your @classification is set to
25
+ # =Semideponent=. This means that the conditional lookup fails. So
26
+ # the choices are to blanket overwrite here, or add another
27
+ # conditional to each TenseBlock returning method, OR break the model
28
+ # of TenseBlock construction. I think the last is the best option,
29
+ # but this current implementation is the second best.
30
+
31
+ def active_voice_indicative_mood_present_tense
32
+ return @proxyVerb.send :active_voice_indicative_mood_present_tense
33
+ end
34
+
35
+ def active_voice_indicative_mood_imperfect_tense
36
+ return @proxyVerb.send :active_voice_indicative_mood_imperfect_tense
37
+ end
38
+
39
+ def active_voice_indicative_mood_future_tense
40
+ return @proxyVerb.send :active_voice_indicative_mood_future_tense
41
+ end
42
+
43
+ # These methods handle the strangeness of semi-deponents, it masks
44
+ # passive perfects to active perfects
45
+
46
+ def active_voice_indicative_mood_perfect_tense
47
+ return @proxyVerb.send :passive_voice_indicative_mood_perfect_tense
48
+ end
49
+ def active_voice_indicative_mood_pastperfect_tense
50
+ return @proxyVerb.send :passive_voice_indicative_mood_pastperfect_tense
51
+ end
52
+ def active_voice_indicative_mood_futureperfect_tense
53
+ return @proxyVerb.send :passive_voice_indicative_mood_futureperfect_tense
54
+ end
55
+
56
+ # These should return nothing
57
+ def passive_voice_indicative_mood_perfect_tense
58
+ return TenseBlock.new ['', '', '', '', '', '']
59
+ end
60
+
61
+ def passive_voice_indicative_mood_pastperfect_tense
62
+ return TenseBlock.new ['', '', '', '', '', '']
63
+ #return @proxyVerb.send :passive_voice_indicative_mood_pastperfect_tense
64
+ end
65
+ def passive_voice_indicative_mood_futureperfect_tense
66
+ return TenseBlock.new ['', '', '', '', '', '']
67
+ #return @proxyVerb.send :passive_voice_indicative_mood_futureperfect_tense
68
+ end
69
+
70
+ # Subjunctives: 2 active, 2 passive
71
+
72
+ def active_voice_subjunctive_mood_present_tense
73
+ return @proxyVerb.send :active_voice_subjunctive_mood_present_tense
74
+ end
75
+
76
+ def active_voice_subjunctive_mood_imperfect_tense
77
+ return @proxyVerb.send :active_voice_subjunctive_mood_imperfect_tense
78
+ end
79
+
80
+ def active_voice_subjunctive_mood_perfect_tense
81
+ return @proxyVerb.send :passive_voice_subjunctive_mood_perfect_tense
82
+ end
83
+ def active_voice_subjunctive_mood_pastperfect_tense
84
+ return @proxyVerb.send :passive_voice_subjunctive_mood_pastperfect_tense
85
+ end
86
+ def passive_voice_subjunctive_mood_perfect_tense
87
+ return TenseBlock.new ['', '', '', '', '', '']
88
+ #return @proxyVerb.send :passive_voice_subjunctive_mood_perfect_tense
89
+ end
90
+ def passive_voice_subjunctive_mood_pastperfect_tense
91
+ return TenseBlock.new ['', '', '', '', '', '']
92
+ #return @proxyVerb.send :passive_voice_subjunctive_mood_pastperfect_tense
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
@@ -0,0 +1,212 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'latinverb'
4
+ require 'linguistics/latin/verb/phonographia'
5
+
6
+ module Linguistics
7
+ module Latin
8
+ module Verb
9
+ ##
10
+ # == NAME
11
+ #
12
+ # Infinitives
13
+ #
14
+ # == DESCRIPTION
15
+ #
16
+ # This module contains the methods that, when mixed into a LatinVerb,
17
+ # will provide it the ability to resolve its infinitives (verbal nouns).
18
+ #
19
+ # == REFERENCE
20
+ #
21
+ # Allen and Greenough Se. 155:
22
+ #
23
+ # <em>From the footnotes</em>
24
+ #
25
+ # 1. The Infinitive is strictly the locative case of an abstract
26
+ # noun, expressing the action of the verb (cf. sec. 451)
27
+ #
28
+ #
29
+ ##
30
+ module Infinitives
31
+
32
+ ##########################################
33
+ # Infinitives
34
+ ##########################################
35
+ # Some very handy getter and setters, for serialization
36
+ ##
37
+
38
+ def infinitives
39
+ return {
40
+ :present_active_infinitive => present_active_infinitive,
41
+ :perfect_active_infinitive => perfect_active_infinitive,
42
+ :future_active_infinitive => future_active_infinitive,
43
+ :present_passive_infinitive => present_passive_infinitive,
44
+ :perfect_passive_infinitive => perfect_passive_infinitive,
45
+ :future_passive_infinitive => future_passive_infinitive
46
+ }
47
+ end
48
+
49
+ ##
50
+ #
51
+ # === GRAMMATICAL FUNCTION
52
+ #
53
+ # A&G, 157,d:
54
+ #
55
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
56
+ # or complement of another ver ( 452, 456.n)
57
+ #
58
+ # "To X"
59
+ #
60
+ # === ARGUMENTS
61
+ #
62
+ # None
63
+ #
64
+ # === RETURNS
65
+ #
66
+ # Array of participles
67
+ #
68
+ ###
69
+ def present_active_infinitive
70
+ return @pres_act_inf
71
+ end
72
+
73
+ ##
74
+ #
75
+ # === GRAMMATICAL FUNCTION
76
+ #
77
+ # A&G, 157,d:
78
+ #
79
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
80
+ # or complement of another ver ( 452, 456.n)
81
+ #
82
+ # "To have X-d"
83
+ #
84
+ # === ARGUMENTS
85
+ #
86
+ # None
87
+ #
88
+ # === RETURNS
89
+ #
90
+ # Array of participles
91
+ #
92
+ ###
93
+ def perfect_active_infinitive
94
+ return @first_pers_perf+"sse"
95
+ end
96
+
97
+ ##
98
+ #
99
+ # === GRAMMATICAL FUNCTION
100
+ #
101
+ # A&G, 157,d:
102
+ #
103
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
104
+ # or complement of another ver ( 452, 456.n)
105
+ #
106
+ # "To be about to X"
107
+ #
108
+ # === ARGUMENTS
109
+ #
110
+ # None
111
+ #
112
+ # === RETURNS
113
+ #
114
+ # Array of participles
115
+ #
116
+ ###
117
+ def future_active_infinitive
118
+ return future_active_participle.sub(/,.*/,'') + " esse"
119
+ end
120
+
121
+ ##
122
+ #
123
+ # === GRAMMATICAL FUNCTION
124
+ #
125
+ # A&G, 157,d:
126
+ #
127
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
128
+ # or complement of another ver ( 452, 456.n)
129
+ #
130
+ # "To be X-d"
131
+ #
132
+ # === ARGUMENTS
133
+ #
134
+ # None
135
+ #
136
+ # === RETURNS
137
+ #
138
+ # Array of participles
139
+ #
140
+ ###
141
+ def present_passive_infinitive
142
+ if @classification == Linguistics::Latin::Verb::VerbTypes::First
143
+ return @pres_act_inf.gsub(/(.*)e$/,"\\1\xc4\xab")
144
+ end
145
+ if @classification == Linguistics::Latin::Verb::VerbTypes::Second
146
+ return @pres_act_inf.gsub(/(.*)e$/,"\\1\xc4\xab")
147
+ end
148
+ if @classification == Linguistics::Latin::Verb::VerbTypes::ThirdIO
149
+ return @pres_act_inf.gsub(/(.*)ere$/,"\\1\xc4\xab")
150
+ end
151
+ if @classification == Linguistics::Latin::Verb::VerbTypes::Third
152
+ return @pres_act_inf.gsub(/(.*)ere$/,"\\1\xc4\xab")
153
+ end
154
+ if @classification == Linguistics::Latin::Verb::VerbTypes::Fourth
155
+ return @pres_act_inf.gsub(/(.*)e$/,"\\1\xc4\xab")
156
+ end
157
+ end
158
+
159
+ ##
160
+ #
161
+ # === GRAMMATICAL FUNCTION
162
+ #
163
+ # A&G, 157,d:
164
+ #
165
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
166
+ # or complement of another ver ( 452, 456.n)
167
+ #
168
+ # "To have been X-d"
169
+ #
170
+ # === ARGUMENTS
171
+ #
172
+ # None
173
+ #
174
+ # === RETURNS
175
+ #
176
+ # Array of participles
177
+ #
178
+ ###
179
+ def perfect_passive_infinitive
180
+ return perfect_passive_participle + " esse"
181
+ end
182
+
183
+ ##
184
+ #
185
+ # === GRAMMATICAL FUNCTION
186
+ #
187
+ # A&G, 157,d:
188
+ #
189
+ # The Infinitive is used chiefly as an indeclinable noun, as the subject
190
+ # or complement of another ver ( 452, 456.n)
191
+ #
192
+ # "To be about to be X-d"
193
+ #
194
+ # <b>Note:</b> This form is exceedingly rare. Wheelock notes that
195
+ # Romans preferred to use the 4th principal part + <b>fore</b>.
196
+ #
197
+ # === ARGUMENTS
198
+ #
199
+ # None
200
+ #
201
+ # === RETURNS
202
+ #
203
+ # Array of participles
204
+ #
205
+ ###
206
+ def future_passive_infinitive
207
+ return supine[:accusative] + " īrī"
208
+ end
209
+ end
210
+ end
211
+ end
212
+ end