llt-constants 0.0.3

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.
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