llt-constants 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9c05c8a5de8d0cba8b834dbb4094662e4da4e396
4
+ data.tar.gz: a0aedcaf8bd474dbbfc5d1eb38ce98fcc9679489
5
+ SHA512:
6
+ metadata.gz: 48b5071dcc3a79f0d351794d3f0735ca70d202eb37570131d1f85ccd048c43554404f8a7255106b87f0e007c9802b01ca473a86df0d28861cebad8fabe557fa6
7
+ data.tar.gz: 3a6d70376ac0344fe1407b3d19046f970a3e51f80c95dfe05d200ed94a0c2e27fafae857b202aa03a12a9225c7b6636ea320a7acbf7e7789ca4dbcce03883c11
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ before_script:
3
+ - "export JRUBY_OPTS=--2.0"
4
+ rvm:
5
+ - 2.0.0
6
+ - jruby-20mode
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in llt-constants.gemspec
4
+ gemspec
5
+ gem 'coveralls', require: false
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 LFDM
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # LLT::Constants
2
+
3
+ [![Version](http://allthebadges.io/latin-language-toolkit/llt-constants/badge_fury.png)](http://allthebadges.io/latin-language-toolkit/llt-constants/badge_fury)
4
+ [![Build Status](https://travis-ci.org/latin-language-toolkit/llt-constants.png?branch=master)](https://travis-ci.org/latin-language-toolkit/llt-constants)
5
+ [![Dependencies](http://gemnasium.com/latin-language-toolkit/llt-constants.png)](http://allthebadges.io/latin-language-toolkit/llt-constants/gemnasium)
6
+ [![Coverage](https://coveralls.io/repos/latin-language-toolkit/llt-constants/badge.png?branch=master)](https://coveralls.io/r/latin-language-toolkit/llt-constants?branch=master)
7
+ [![Code Climate](https://codeclimate.com/github/latin-language-toolkit/llt-constants.png)](https://codeclimate.com/github/latin-language-toolkit/llt-constants)
8
+
9
+ LLT::Constants contains Latin infixes, inflectional endings and Latin
10
+ phonemes.
11
+
12
+
13
+ List of contents:
14
+ * **noun endings** for all declension types (e.g. amic - *us*)
15
+ * **adjective endings** for all declension types (e.g. laet - *um*,
16
+ fort - *is*)
17
+ * **adjective comparison signs** (e.g. alt - *ior* - es, alt - *issim* - us)
18
+ * **verb endings** for all types of conjugation and tenses and moods (active, passive, primary, secondary, imperative)
19
+ * **verb tempus infixes** (e.g. ama - *ba* - t)
20
+ * **Latin phonemes** and their 'linguistic values' (e.g. phoneme *d* is a
21
+ dental)
22
+
23
+ Metrical values (encoded in UTF-8) available.
24
+
25
+ list to be continued
26
+
27
+
28
+ ## Installation
29
+
30
+ Add this line to your application's Gemfile:
31
+
32
+ gem 'llt-constants'
33
+
34
+ And then execute:
35
+
36
+ $ bundle
37
+
38
+ Or install it yourself as:
39
+
40
+ $ gem install llt-constants
41
+
42
+ ## Usage
43
+
44
+ TODO: Write usage instructions here
45
+
46
+ ## Contributing
47
+
48
+ 1. Fork it
49
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
50
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
51
+ 4. Push to the branch (`git push origin my-new-feature`)
52
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec) do |t|
5
+ t.rspec_opts = '-f d --color --tty'
6
+ end
7
+
8
+ task :default => :spec
@@ -0,0 +1,13 @@
1
+ require "llt/constants/version"
2
+ require "llt/constants/abbreviations"
3
+ require "llt/constants/cardinals"
4
+ require "llt/constants/conjunctions"
5
+ require "llt/constants/markers"
6
+ require "llt/constants/endings"
7
+ require "llt/constants/phonology"
8
+ require "llt/constants/personal_pronouns"
9
+ require "llt/constants/prepositions"
10
+ require "llt/constants/regexps"
11
+ require "llt/constants/subjunctions"
12
+ require "llt/constants/verb_endings"
13
+ require "llt/constants/verb_markers"
@@ -0,0 +1,13 @@
1
+ module LLT
2
+ module Constants
3
+ module Abbreviations
4
+ NAMES = %w{ A D C K L M N P Q S T App Ap Cn Mam M Ser Sex Sp Tib Ti }
5
+ NAMES_PIPED = NAMES.join('|')
6
+
7
+ DATES = %w{ a d Kal Non Id Ian Feb Mar Apr Mai Iun Iul Aug Sep Oct Nov Dec }
8
+ DATES_PIPED = DATES.join('|')
9
+
10
+ ALL_ABBRS_PIPED = "#{NAMES_PIPED}|#{DATES_PIPED}"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,45 @@
1
+ module LLT
2
+ module Constants
3
+ CARDINALS = {
4
+ "duo" => [[2, 1, :m], [2, 4, :m], [2, 1, :n], [2, 4, :n]],
5
+ "duorum" => [[2, 2, :m], [2, 2, :n]],
6
+ "duobus" => [[2, 3, :m], [2, 6, :m], [2, 3, :n], [2, 6, :n]],
7
+ "duos" => [[2, 4, :m]],
8
+ "duae" => [[2, 1, :f]],
9
+ "duarum" => [[2, 2, :f]],
10
+ "duabus" => [[2, 3, :f], [2, 6, :f]],
11
+ "duas" => [[2, 4, :f]],
12
+ "ambo" => [[2, 1, :m], [2, 4, :m], [2, 1, :n], [2, 4, :n]],
13
+ "amborum" => [[2, 2, :m], [2, 2, :n]],
14
+ "ambobus" => [[2, 3, :m], [2, 6, :m], [2, 3, :n], [2, 6, :n]],
15
+ "ambos" => [[2, 4, :m]],
16
+ "ambae" => [[2, 1, :f]],
17
+ "ambarum" => [[2, 2, :f]],
18
+ "ambabus" => [[2, 3, :f], [2, 6, :f]],
19
+ "ambas" => [[2, 4, :f]],
20
+ "tres" => [[3, 1, :m], [3, 1, :f], [3, 4, :m], [3, 4, :f]],
21
+ "trium" => [[3, 2, :m], [3, 2, :f], [3, 2, :n]],
22
+ "tribus" => [[3, 3, :m], [3, 3, :f], [3, 3, :n], [3, 6, :m], [3, 6, :f], [3, 6, :n]],
23
+ "tria" => [[3, 1, :n], [3, 4, :n]],
24
+ "milia" => [[1000, 1, nil], [1000, 4, nil]],
25
+ "milium" => [[1000, 2, nil]],
26
+ "milibus" => [[1000, 3, nil], [1000, 6, nil]],
27
+ "quattuor" => [[4, nil, nil]],
28
+ "quinque" => [[5, nil, nil]],
29
+ "sex" => [[6, nil, nil]],
30
+ "septem" => [[7, nil, nil]],
31
+ "octo" => [[8, nil, nil]],
32
+ "novem" => [[9, nil, nil]],
33
+ "decem" => [[10, nil, nil]],
34
+ "undecim" => [[11, nil, nil]],
35
+ "duodecim" => [[12, nil, nil]],
36
+ "tredecim" => [[13, nil, nil]],
37
+ "quattuordecim" => [[14, nil, nil]],
38
+ "quindecim" => [[15, nil, nil]],
39
+ "sedecim" => [[16, nil, nil]],
40
+ "septendecim" => [[17, nil, nil]],
41
+ "mille" => [[1000, nil, nil]],
42
+ "duodeviginti" => [[18, nil, nil]]
43
+ }
44
+ end
45
+ end
@@ -0,0 +1,27 @@
1
+ module LLT
2
+ module Constants
3
+ # word => homophonous_forms?
4
+
5
+ CONJUNCTIONS = {"et" => false,
6
+ "-que" => false,
7
+ "atque" => false,
8
+ "neque" => false,
9
+ "nec" => false,
10
+ "aut" => false,
11
+ "vel" => false,
12
+ "sive" => false,
13
+ "seu" => false,
14
+ "-ve" => false,
15
+ "sed" => false,
16
+ "verum" => true,
17
+ "at" => false,
18
+ "attamen"=> false,
19
+ "tamen" => false,
20
+ "velut" => false,
21
+ "ac" => false,
22
+ "com" => false,
23
+ "an" => false,
24
+ "ergo" => false,
25
+ "atqui" => false}
26
+ end
27
+ end
@@ -0,0 +1,338 @@
1
+ require 'llt/constants/verb_endings'
2
+
3
+ module LLT
4
+ module Constants
5
+ module Endings
6
+
7
+ class Noun
8
+ A = [:a, :ae, :ae, :am, :a, :a, :ae, :arum, :is, :as, :ae, :is]
9
+ O = [:us, :i, :o, :um, :e, :o, :i, :orum, :is, :os, :i, :is]
10
+ ON = [:um, :i, :o, :um, :um, :o, :a, :orum, :is, :a, :a, :is]
11
+ E = [:es, :ei, :ei, :em, :es, :e, :es, :erum, :ebus, :es, :es, :ebus]
12
+ U = [:us, :us, :ui, :um, :us, :u, :us, :uum, :ibus, :us, :us, :ibus]
13
+ UN = [:u, :us, :u, :u, :u, :u, :ua, :uum, :ibus, :ua, :ua, :ibus]
14
+ C = [nil, :is, :i, :em, nil, :e, :es, :um, :ibus, :es, :es, :ibus]
15
+ CN = [nil, :is, :i, nil, nil, :e, :a, :um, :ibus, :a, :a, :ibus]
16
+ M = [nil, :is, :i, :em, nil, :e, :es, :ium, :ibus, :es, :es, :ibus]
17
+ I = [:is, :is, :i, :im, :is, :i, :es, :ium, :ibus, :es, :es, :ibus]
18
+ IN = [:e, :is, :i, :e, :e, :i, :ia, :ium, :ibus, :ia, :ia, :ibus]
19
+ IRREGULARS = [nil, nil, nil, nil, nil, nil, nil, nil, :bus, nil, nil, :bus]
20
+
21
+ class Metrical < Noun
22
+ A = [:ă, :ae, :ae, :ăm, :ă, :ā, :ae, :ārŭm, :īs, :ās, :ae, :īs]
23
+ O = [:ŭs, :ī, :ō, :ŭm, :ĕ, :ō, :ī, :ōrŭm, :īs, :ōs, :ī, :īs]
24
+ ON = [:ŭm, :ī, :ō, :ŭm, :ŭm, :ō, :ă, :ōrŭm, :īs, :ă, :ă, :īs]
25
+ #attention: if final sound of stem is vowel 2sg and 3sg e is long, else short: see diēī but rĕī
26
+ EL = [:ēs, :ēī, :ēī, :ĕm, :ēs, :ē, :ēs, :ērŭm, :ēbŭs, :ēs, :ēs, :ēbŭs]
27
+ ES = [:ēs, :ĕī, :ĕī, :ĕm, :ēs, :ē, :ēs, :ērŭm, :ēbŭs, :ēs, :ēs, :ēbŭs]
28
+ U = [:ŭs, :ūs, :ŭī, :ŭm, :ŭs, :ū, :ūs, :ŭŭm, :ĭbŭs, :ūs, :ūs, :ĭbŭs]
29
+ UN = [:ū, :ūs, :ū, :ū, :ū, :ū, :ŭă, :ŭŭm, :ĭbŭs, :ŭă, :ŭă, :ĭbŭs]
30
+ C = [nil, :ĭs, :ī, :ĕm, nil, :ĕ, :ēs, :ŭm, :ĭbŭs, :ēs, :ēs, :ĭbŭs]
31
+ CN = [nil, :ĭs, :ī, nil, nil, :ĕ, :ă, :ŭm, :ĭbŭs, :ă, :ă, :ĭbŭs]
32
+ M = [nil, :ĭs, :ī, :ĕm, nil, :ĕ, :ēs, :ĭŭm, :ĭbŭs, :ēs, :ēs, :ĭbŭs]
33
+ I = [:ĭs, :ĭs, :ī, :ĭm, :ĭs, :ī, :ēs, :ĭŭm, :ĭbŭs, :ēs, :ēs, :ĭbŭs]
34
+ IN = [:ĕ, :ĭs, :ī, :ĕ, :ĕ, :ī, :ĭă, :ĭŭm, :ĭbŭs, :ĭă, :ĭă, :ĭbŭs]
35
+ IRREGULARS = [nil, nil, nil, nil, nil, nil, nil, nil, :bŭs, nil, nil, :bŭs]
36
+ end
37
+
38
+ def self.get_ending_for_inflection_class(inflection_class)
39
+ case inflection_class
40
+ when 1 then :A
41
+ when 2 then :O
42
+ when 3 then :C
43
+ when 32 then :I
44
+ when 33 then :M
45
+ when 4 then :U
46
+ when 5 then :E
47
+ end
48
+ end
49
+
50
+ def self.get_ending_for_inflection_class_as_neutrum(inflection_class)
51
+ case inflection_class
52
+ when 2 then :ON
53
+ when 3 then :CN
54
+ when 4 then :UN
55
+ when 31 then :IN
56
+ end
57
+ end
58
+
59
+ def self.get(inflection_class, sexus = nil)
60
+ ending = if sexus == :n
61
+ get_ending_for_inflection_class_as_neutrum(inflection_class)
62
+ else
63
+ get_ending_for_inflection_class(inflection_class)
64
+ end
65
+ const_get(ending)
66
+ end
67
+ end
68
+
69
+ class Adjective
70
+ A = Noun::A
71
+ O = Noun::O
72
+ ON = Noun::ON
73
+ CMF = Noun::C
74
+ CN = Noun::CN
75
+ MMF = [nil, :is, :i, :em, nil, :i, :es, :ium, :ibus, :es, :es, :ibus]
76
+ MN = [nil, :is, :i, nil, nil, :i, :ia, :ium, :ibus, :ia, :ia, :ibus]
77
+ PRM = [:us, :ius, :i, :um, :e, :o, :i, :orum, :is, :os, :i, :is]
78
+ PRF = [:a, :ius, :i, :am, :a, :a, :ae, :arum, :is, :as, :ae, :is]
79
+ PRN = [:um, :ius, :i, :um, :um, :o, :a, :orum, :is, :a, :a, :is]
80
+
81
+ AO = Noun::O + Noun::A + Noun::ON
82
+ MIXED = MMF + MMF + MN
83
+ MIXED_1 = MIXED
84
+ MIXED_2 = MIXED.each_with_index.map do |el, i|
85
+ case i.to_s
86
+ when /^(0|4|12|16)$/ then :is
87
+ when /^(24|27|28)$/ then :e
88
+ else el
89
+ end
90
+ end
91
+ MIXED_3 = MIXED_2.each_with_index.map do |el, i|
92
+ case i.to_s
93
+ when /^(0|4)$/ then nil
94
+ else el
95
+ end
96
+ end
97
+ CONSONANTIC = CMF + CMF + CN
98
+ PRONOMINAL = PRM + PRF + PRN
99
+
100
+ class Metrical < Adjective
101
+ A = Noun::Metrical::A
102
+ O = Noun::Metrical::O
103
+ ON = Noun::Metrical::ON
104
+ CMF = Noun::Metrical::C
105
+ CN = Noun::Metrical::CN
106
+ MMF = [nil, :ĭs, :ī, :ĕm, nil, :ī, :ēs, :ĭŭm, :ĭbŭs, :ēs, :ēs, :ĭbŭs]
107
+ MN = [nil, :ĭs, :ī, nil, nil, :ī, :ĭa, :ĭŭm, :ĭbŭs, :ĭa, :ĭa, :ĭbŭs]
108
+ PRM = [:ŭs, :īŭs, :ī, :ŭm, :ĕ, :ō, :ī, :ōrŭm, :īs, :ōs, :ī, :īs]
109
+ PRF = [:ă, :īŭs, :ī, :ăm, :ă, :ā, :ae, :ārum, :īs, :ās, :ae, :īs]
110
+ PRN = [:ŭm, :īŭs, :ī, :ŭm, :ŭm, :ō, :ă, :ōrŭm, :īs, :ă, :ă, :īs]
111
+
112
+ AO = Noun::Metrical::O + Noun::Metrical::A + Noun::Metrical::ON
113
+ MIXED = MMF + MMF + MN
114
+ MIXED_1 = MIXED
115
+ MIXED_2 = MIXED.each_with_index.map do |el, i|
116
+ case i.to_s
117
+ when /^(0|4|12|16)$/ then :ĭs
118
+ when /^(24|27|28)$/ then :ĕ
119
+ else el
120
+ end
121
+ end
122
+ MIXED_3 = MIXED_2.each_with_index.map do |el, i|
123
+ case i.to_s
124
+ when /^(0|4)$/ then nil
125
+ else el
126
+ end
127
+ end
128
+ CONSONANTIC = CMF + CMF + CN
129
+ PRONOMINAL = PRM + PRF + PRN
130
+ end
131
+
132
+ def self.get(inflection_class, number_of_endings, comparatio = :positivus)
133
+ const_get(case comparatio
134
+ when :comparativus
135
+ :CONSONANTIC
136
+ when :superlativus
137
+ :AO
138
+ else # positivus - or nil if someone has forgotten to provide a value
139
+ case [inflection_class, number_of_endings]
140
+ when [1, 3] then :AO
141
+ when [3, 1] then :MIXED_1
142
+ when [3, 2] then :MIXED_2
143
+ when [3, 3] then :MIXED_3
144
+ when [5, 3] then :PRONOMINAL
145
+ end
146
+ end)
147
+ end
148
+ end
149
+
150
+ class Adverb
151
+ E = "e"
152
+ ITER = "iter"
153
+ TER = "ter"
154
+ ER = "er"
155
+ EMPTY = ""
156
+
157
+ def self.get(inflection_class, stem, comparatio)
158
+ const_get(case comparatio
159
+ when :comparativus then :EMPTY
160
+ when :superlativus then :E
161
+ else positivus_ending(inflection_class, stem)
162
+ end)
163
+ end
164
+
165
+ def self.positivus_ending(inflection_class, stem)
166
+ if inflection_class == 3
167
+ case stem
168
+ when /nt$/ then :ER
169
+ when /^facil$/ then :E
170
+ else :ITER
171
+ # TER for audacter and sollerter, cf. RH 50
172
+ end
173
+ else
174
+ :E
175
+ end
176
+ end
177
+ end
178
+
179
+ class Pronoun
180
+ HIC = [:i, :ius, :i, :un, nil, :o, :i, :orum, :is, :os, nil, :is]
181
+ HAEC = [:ae, :ius, :i, :an, nil, :a, :ae, :arum, :is, :as, nil, :is]
182
+ HOC = [:o, :ius, :i, :o, nil, :o, :ae, :orum, :is, :ae, nil, :is]
183
+
184
+ #ille + iste
185
+ ILLE = [:e, :ius, :i, :um, nil, :o, :i, :orum, :is, :os, nil, :is]
186
+ ILLA = [:a, :ius, :i, :am, nil, :a, :ae, :arum, :is, :as, nil, :is]
187
+ ILLUD = [:ud, :ius, :i, :ud, nil, :o, :a, :orum, :is, :a, nil, :is]
188
+
189
+ #ipse
190
+ IPSE = ILLE
191
+ IPSA = ILLA
192
+ IPSUM = [:um, :ius, :i, :um, nil, :o, :a, :orum, :is, :a, nil, :is]
193
+
194
+ #is
195
+ IS = [:s, :ius, :i, :um, nil, :o, :i, :orum, :is, :os, nil, :is]
196
+ EA = ILLA
197
+ ID = [:d, :ius, :i, :d, nil, :o, :a, :orum, :is, :a, nil, :is]
198
+
199
+ #idem
200
+ IDEM = [nil, :ius, :i, :un, nil, :o, :i, :orun, :is, :os, nil, :is]
201
+ EADEM = [:a, :ius, :i, :an, nil, :a, :ae, :arun, :is, :as, nil, :is]
202
+ IDEM_N = [nil, :ius, :i, nil, nil, :o, :a, :orun, :is, :a, nil, :is]
203
+
204
+ #qui
205
+ QUI = [:i, :ius, :i, :em, nil, :o, :i, :orum, :ibus, :os, nil, :ibus]
206
+ QUAE = [:ae, :ius, :i, :am, nil, :a, :ae, :arum, :ibus, :as, nil, :ibus]
207
+ QUOD = [:od, :ius, :i, :od, nil, :o, :ae, :orum, :ibus, :ae, nil, :ibus]
208
+ QUA = [:a, :ius, :i, :am, nil, :a, :ae, :arum, :ibus, :as, nil, :ibus]
209
+
210
+ #quidam - adj
211
+ QUIDAM = [:i, :ius, :i, :en, nil, :o, :i, :orun, :ibus, :os, nil, :ibus]
212
+ QUAEDAM = [:ae, :ius, :i, :an, nil, :a, :ae, :arun, :ibus, :as, nil, :ibus]
213
+ QUODDAM = [:od, :ius, :i, :od, nil, :o, :ae, :orun, :ibus, :ae, nil, :ibus]
214
+
215
+ #quis
216
+ QUIS = [:is, :ius, :i, :em, nil, :o, :i, :orum, :ibus, :os, nil, :ibus]
217
+ #QUAE
218
+ QUID = [:id, :ius, :i, :id, nil, :o, :ae, :orum, :ibus, :ae, nil, :ibus]
219
+
220
+ #uter + uterque
221
+ UTER = [nil, :ius, :i, :um, nil, :o, :i, :orum, :is, :os, nil, :is]
222
+ UTRA = [:a, :ius, :i, :am, nil, :a, :ae, :arum, :is, :as, nil, :is]
223
+ UTRUM = [:um, :ius, :i, :um, nil, :o, :a, :orum, :is, :a, nil, :is]
224
+
225
+ def self.get(pronoun_type)
226
+ qui_adj = QUI + QUAE + QUOD
227
+ quis_adj = QUIS + QUAE + QUOD
228
+ qui_subst = QUIS + QUIS + QUID
229
+ uter_adj = UTER + UTRA + UTRUM
230
+ ille_iste = ILLE + ILLA + ILLUD
231
+ case pronoun_type
232
+ when :aliqui then QUI + QUA + QUOD
233
+ when :aliquis then qui_subst
234
+ when :hic then HIC + HAEC + HOC
235
+ when :idem then IDEM + EADEM + IDEM_N
236
+ when :ille then ille_iste
237
+ when :ipse then IPSE + IPSA + IPSUM
238
+ when :is then IS + EA + ID
239
+ when :iste then ille_iste
240
+ when :qui then qui_adj
241
+ when :quicumque then qui_adj
242
+ when :quidam then QUIDAM + QUAEDAM + QUODDAM
243
+ when :quilibet then qui_adj
244
+ when :quinam then qui_adj
245
+ when :quis then qui_subst
246
+ when :quisquam then qui_subst
247
+ when :quispiam then qui_subst
248
+ when :quisque then quis_adj
249
+ when :quisque_s then qui_subst
250
+ when :quisquis then qui_subst
251
+ when :quivis then qui_adj
252
+ when :unusquisque then quis_adj
253
+ when :unusquisque_s then qui_subst
254
+ when :uter then uter_adj
255
+ when :uterque then uter_adj
256
+ #when :quilibet then QUI + QUAE + QUID
257
+ #when :quivis then QUI + QUAE + QUID
258
+ end
259
+ end
260
+ end
261
+ class PersonalPronoun
262
+ nils = [nil] * 6
263
+ EGO = ["ego", "mei", "mihi", "me", nil, "me" ]
264
+ TU = ["tu", "tui", "tibi", "te", nil, "te" ]
265
+ SE = [nil, "sui", "sibi", "se", nil, "se"] * 2
266
+ NOS = nils + ["nos", "nostri", "nobis", "nos", nil, "nobis"] # handle nostrum and vestrum in the builder
267
+ VOS = nils + ["vos", "vestri", "vobis", "vos", nil, "vobis"]
268
+
269
+ def self.get(inflection_class)
270
+ const_get(inflection_class.upcase)
271
+ end
272
+ end
273
+
274
+
275
+ class Ppa
276
+ MMFE = [:s, :is, :i, :em, :s, :e, :es, :ium, :ibus, :es, :es, :ibus]
277
+ MNE = [:s, :is, :i, :s, :s, :e, :ia, :ium, :ibus, :ia, :ia, :ibus]
278
+
279
+ def self.get(*args)
280
+ MMFE + MMFE + MNE
281
+ end
282
+
283
+ class Metrical < Ppa
284
+ MMFE = [:s, :ĭs, :ī, :ĕm, :s, :ĕ, :ēs, :ĭŭm, :ĭbŭs, :ēs, :ēs, :ĭbŭs]
285
+ MNE = [:s, :ĭs, :ī, :s, :s, :ĕ, :ĭa, :ĭŭm, :ĭbŭs, :ĭa, :ĭa, :ĭbŭs]
286
+ end
287
+ end
288
+
289
+ class AoVerbalNoun
290
+ AO = Adjective::AO
291
+
292
+ def self.get(*args)
293
+ AO
294
+ end
295
+
296
+ class Metrical < AoVerbalNoun
297
+ AO = Adjective::Metrical::AO
298
+ end
299
+ end
300
+
301
+ class Gerundive < AoVerbalNoun
302
+ class Metrical < AoVerbalNoun; end
303
+ end
304
+
305
+ class Ppp < AoVerbalNoun
306
+ class Metrical < AoVerbalNoun; end
307
+ end
308
+
309
+ class Fp < AoVerbalNoun
310
+ class Metrical < AoVerbalNoun; end
311
+ end
312
+
313
+ class Gerund
314
+ GERUND = %i{ i o um o }
315
+
316
+ def self.get(*args)
317
+ GERUND
318
+ end
319
+
320
+ class Metrical < Gerund
321
+ GERUND = [:ī, :ō, :ŭm, :ō]
322
+ end
323
+ end
324
+
325
+ class Supinum
326
+ SUPINUM = %i{ u um u }
327
+
328
+ def self.get(*args)
329
+ SUPINUM
330
+ end
331
+
332
+ class Metrical < Supinum
333
+ SUPINUM = %i{ ū ŭm ū }
334
+ end
335
+ end
336
+ end
337
+ end
338
+ end