llt-form_builder 0.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/.rspec +3 -0
- data/.travis.yml +4 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +8 -0
- data/lib/llt/form/adjective.rb +19 -0
- data/lib/llt/form/adverb.rb +13 -0
- data/lib/llt/form/cardinal.rb +31 -0
- data/lib/llt/form/conjunction.rb +7 -0
- data/lib/llt/form/declinable.rb +23 -0
- data/lib/llt/form/demonstrative_pronoun.rb +7 -0
- data/lib/llt/form/ethnic.rb +6 -0
- data/lib/llt/form/fp.rb +6 -0
- data/lib/llt/form/gerund.rb +9 -0
- data/lib/llt/form/gerundive.rb +12 -0
- data/lib/llt/form/indefinite_pronoun.rb +7 -0
- data/lib/llt/form/infinitive.rb +13 -0
- data/lib/llt/form/interrogative_pronoun.rb +7 -0
- data/lib/llt/form/noun.rb +17 -0
- data/lib/llt/form/participle.rb +9 -0
- data/lib/llt/form/personal_pronoun.rb +13 -0
- data/lib/llt/form/ppa.rb +6 -0
- data/lib/llt/form/ppp.rb +6 -0
- data/lib/llt/form/preposition.rb +32 -0
- data/lib/llt/form/pronoun.rb +17 -0
- data/lib/llt/form/relative_pronoun.rb +7 -0
- data/lib/llt/form/subjunction.rb +7 -0
- data/lib/llt/form/supinum.rb +6 -0
- data/lib/llt/form/uninflectable.rb +22 -0
- data/lib/llt/form/verb.rb +28 -0
- data/lib/llt/form/verbal_noun.rb +18 -0
- data/lib/llt/form.rb +80 -0
- data/lib/llt/form_builder/adjective_builder.rb +86 -0
- data/lib/llt/form_builder/adverb_builder.rb +25 -0
- data/lib/llt/form_builder/declinable_builder.rb +164 -0
- data/lib/llt/form_builder/ethnic_builder.rb +17 -0
- data/lib/llt/form_builder/fp_builder.rb +13 -0
- data/lib/llt/form_builder/gerund_builder.rb +37 -0
- data/lib/llt/form_builder/gerundive_builder.rb +24 -0
- data/lib/llt/form_builder/helpers/adjective_like_building.rb +29 -0
- data/lib/llt/form_builder/helpers/pronoun_segments.rb +226 -0
- data/lib/llt/form_builder/helpers/stem_hash_parser.rb +263 -0
- data/lib/llt/form_builder/helpers/verb_segments.rb +562 -0
- data/lib/llt/form_builder/infinitivum_builder.rb +19 -0
- data/lib/llt/form_builder/irregular_gerund_builder.rb +7 -0
- data/lib/llt/form_builder/irregular_gerundive_builder.rb +7 -0
- data/lib/llt/form_builder/irregular_ppa_builder.rb +7 -0
- data/lib/llt/form_builder/irregular_praesens_builder.rb +5 -0
- data/lib/llt/form_builder/irregular_praesens_infinitivum_builder.rb +5 -0
- data/lib/llt/form_builder/noun_builder.rb +24 -0
- data/lib/llt/form_builder/perfectum_builder.rb +14 -0
- data/lib/llt/form_builder/perfectum_infinitivum_builder.rb +7 -0
- data/lib/llt/form_builder/personal_pronoun_builder.rb +107 -0
- data/lib/llt/form_builder/ppa_builder.rb +20 -0
- data/lib/llt/form_builder/ppp_builder.rb +10 -0
- data/lib/llt/form_builder/praesens_builder.rb +41 -0
- data/lib/llt/form_builder/praesens_infinitivum_builder.rb +9 -0
- data/lib/llt/form_builder/pronoun_builder.rb +106 -0
- data/lib/llt/form_builder/supinum_builder.rb +23 -0
- data/lib/llt/form_builder/verb_builder.rb +37 -0
- data/lib/llt/form_builder/version.rb +5 -0
- data/lib/llt/form_builder.rb +370 -0
- data/lib/llt/stem/adjective_pack.rb +122 -0
- data/lib/llt/stem/adjective_stem.rb +23 -0
- data/lib/llt/stem/ethnic_stem.rb +9 -0
- data/lib/llt/stem/noun_pack.rb +14 -0
- data/lib/llt/stem/noun_stem.rb +26 -0
- data/lib/llt/stem/pack.rb +46 -0
- data/lib/llt/stem/verb_pack.rb +53 -0
- data/lib/llt/stem/verb_stem.rb +18 -0
- data/lib/llt/stem.rb +145 -0
- data/lib/llt/stem_builder.rb +53 -0
- data/llt-form_builder.gemspec +30 -0
- data/spec/lib/llt/form/adjective_spec.rb +10 -0
- data/spec/lib/llt/form/adverb_spec.rb +17 -0
- data/spec/lib/llt/form/conjunction_spec.rb +23 -0
- data/spec/lib/llt/form/demonstrative_pronoun_spec.rb +14 -0
- data/spec/lib/llt/form/fp_spec.rb +12 -0
- data/spec/lib/llt/form/functions_spec.rb +13 -0
- data/spec/lib/llt/form/gerund_spec.rb +10 -0
- data/spec/lib/llt/form/gerundive_spec.rb +13 -0
- data/spec/lib/llt/form/noun_spec.rb +18 -0
- data/spec/lib/llt/form/ppa_spec.rb +12 -0
- data/spec/lib/llt/form/ppp_spec.rb +12 -0
- data/spec/lib/llt/form/preposition_spec.rb +43 -0
- data/spec/lib/llt/form/supinum_spec.rb +9 -0
- data/spec/lib/llt/form/verb_spec.rb +14 -0
- data/spec/lib/llt/form_builder/adjective_builder_spec.rb +182 -0
- data/spec/lib/llt/form_builder/adverb_builder_spec.rb +27 -0
- data/spec/lib/llt/form_builder/ethnic_builder_spec.rb +17 -0
- data/spec/lib/llt/form_builder/form_builder_spec.rb +16 -0
- data/spec/lib/llt/form_builder/fp_builder_spec.rb +42 -0
- data/spec/lib/llt/form_builder/gerund_builder_spec.rb +80 -0
- data/spec/lib/llt/form_builder/gerundive_builder_spec.rb +102 -0
- data/spec/lib/llt/form_builder/helpers/stem_hash_parser_spec.rb +197 -0
- data/spec/lib/llt/form_builder/irregular_gerund_builder_spec.rb +22 -0
- data/spec/lib/llt/form_builder/irregular_gerundive_builder_spec.rb +21 -0
- data/spec/lib/llt/form_builder/irregular_praesens_builder_spec.rb +14 -0
- data/spec/lib/llt/form_builder/irregular_praesens_infinitivum_builder_spec.rb +32 -0
- data/spec/lib/llt/form_builder/noun_builder_spec.rb +245 -0
- data/spec/lib/llt/form_builder/personal_pronoun_builder_spec.rb +49 -0
- data/spec/lib/llt/form_builder/ppa_builder_spec.rb +137 -0
- data/spec/lib/llt/form_builder/ppp_builder_spec.rb +45 -0
- data/spec/lib/llt/form_builder/pronoun_builder_spec.rb +203 -0
- data/spec/lib/llt/form_builder/supinum_builder_spec.rb +24 -0
- data/spec/lib/llt/form_builder/verb_builder_spec.rb +557 -0
- data/spec/lib/llt/form_spec.rb +27 -0
- data/spec/lib/llt/stem/adjective_pack_spec.rb +78 -0
- data/spec/lib/llt/stem/adjective_stem_spec.rb +15 -0
- data/spec/lib/llt/stem/noun_pack_spec.rb +20 -0
- data/spec/lib/llt/stem/noun_stem_spec.rb +14 -0
- data/spec/lib/llt/stem/verb_pack_spec.rb +56 -0
- data/spec/lib/llt/stem_builder_spec.rb +20 -0
- data/spec/spec_helper.rb +21 -0
- metadata +330 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
include LLT::Helpers::Normalizer
|
|
5
|
+
|
|
6
|
+
describe ".build" do
|
|
7
|
+
#def form_builder_strings(args)
|
|
8
|
+
# forms = LLT::FormBuilder.build(*args)
|
|
9
|
+
# forms.map(&:to_s)
|
|
10
|
+
#end
|
|
11
|
+
|
|
12
|
+
context "with supina" do
|
|
13
|
+
it "builds all forms" do
|
|
14
|
+
args = [{type: :supinum, stem: "amat", inflection_class: 1, tense: :pf}]
|
|
15
|
+
forms = LLT::FormBuilder.build(*args)
|
|
16
|
+
forms.map(&:to_s).should == %w{ amatu amatum amatu }
|
|
17
|
+
forms[0].casus.should == 3
|
|
18
|
+
forms[1].casus.should == 4
|
|
19
|
+
forms[2].casus.should == 6
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
@@ -0,0 +1,557 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
include LLT::Helpers::Normalizer
|
|
5
|
+
|
|
6
|
+
describe ".build" do
|
|
7
|
+
def form_builder_strings(args)
|
|
8
|
+
forms = LLT::FormBuilder.build(*args)
|
|
9
|
+
forms.map(&:to_s)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def verb_with_options(options)
|
|
13
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: options}]
|
|
14
|
+
LLT::FormBuilder.build(*args)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def perf_verb_with_options(options)
|
|
18
|
+
args = [{type: :perfectum, stem: "amav", inflection_class: 1, options: options}]
|
|
19
|
+
LLT::FormBuilder.build(*args)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
context "with verbs" do
|
|
23
|
+
context "without options" do
|
|
24
|
+
context "with praesens stem" do
|
|
25
|
+
context "check variables of a single form" do
|
|
26
|
+
context "a conj" do
|
|
27
|
+
let(:forms) do
|
|
28
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1}]
|
|
29
|
+
LLT::FormBuilder.build(*args)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "1.st.sg.ind.pr.act." do
|
|
33
|
+
amo = forms[0]
|
|
34
|
+
amo.modus.should == t.indicativus
|
|
35
|
+
amo.genus.should == t.activum
|
|
36
|
+
amo.tempus.should == t.praesens
|
|
37
|
+
amo.numerus.should == t.sg
|
|
38
|
+
amo.persona.should == 1
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "3.pl.ind.pr.pass." do
|
|
42
|
+
amantur = forms[11]
|
|
43
|
+
amantur.modus.should == t.indicativus
|
|
44
|
+
amantur.genus.should == t.passivum
|
|
45
|
+
amantur.tempus.should == t.praesens
|
|
46
|
+
amantur.numerus.should == t.pl
|
|
47
|
+
amantur.persona.should == 3
|
|
48
|
+
amantur.to_s(true).should == "ama-ntur"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "3.sg.con.pr.act." do
|
|
52
|
+
amet = forms[14]
|
|
53
|
+
amet.modus.should == t.con
|
|
54
|
+
amet.genus.should == t.act
|
|
55
|
+
amet.tempus.should == t.praesens
|
|
56
|
+
amet.numerus.should == t.sg
|
|
57
|
+
amet.persona.should == 3
|
|
58
|
+
amet.to_s(true).should == "am-e-t"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "2.pl.ind.imp.pass." do
|
|
62
|
+
amabatis = forms[32]
|
|
63
|
+
amabatis.modus.should == t.ind
|
|
64
|
+
amabatis.genus.should == t.act
|
|
65
|
+
amabatis.tempus.should == t.impf
|
|
66
|
+
amabatis.to_s(true).should == "ama-ba-tis"
|
|
67
|
+
amabatis.persona.should == 2
|
|
68
|
+
amabatis.numerus.should == t.pl
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "3.pl.ind.fut.pass." do
|
|
72
|
+
amabuntur = forms[63]
|
|
73
|
+
amabuntur.modus.should == t.ind
|
|
74
|
+
amabuntur.genus.should == t.pass
|
|
75
|
+
amabuntur.tempus.should == t.fut
|
|
76
|
+
amabuntur.numerus.should == t.pl
|
|
77
|
+
amabuntur.persona.should == 3
|
|
78
|
+
amabuntur.to_s(true).should == "ama-b-u-ntur"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
context "c conj" do
|
|
83
|
+
let(:forms) do
|
|
84
|
+
args = [{ type: :praesens, stem: "leg", inflection_class: 3 }]
|
|
85
|
+
LLT::FormBuilder.build(*args)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "1.sg.con.pr.pass." do
|
|
89
|
+
legar = forms[18]
|
|
90
|
+
legar.modus.should == t.con
|
|
91
|
+
legar.genus.should == t.pass
|
|
92
|
+
legar.tempus.should == t.pr
|
|
93
|
+
legar.numerus.should == t.sg
|
|
94
|
+
legar.persona.should == 1
|
|
95
|
+
legar.to_s(true).should == "leg-a-r"
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
context "i conj" do
|
|
100
|
+
let(:forms) do
|
|
101
|
+
args = [{ type: :praesens, stem: "audi", inflection_class: 4 }]
|
|
102
|
+
LLT::FormBuilder.build(*args)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "2.pl.con.impf.pass." do
|
|
106
|
+
audiremini = forms[50]
|
|
107
|
+
audiremini.modus.should == t.con
|
|
108
|
+
audiremini.genus.should == t.pass
|
|
109
|
+
audiremini.tempus.should == t.impf
|
|
110
|
+
audiremini.numerus.should == t.pl
|
|
111
|
+
audiremini.persona.should == 2
|
|
112
|
+
audiremini.to_s(true).should == "audi-re-mini"
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "3.pl.ind.pr.act." do
|
|
116
|
+
audiunt = forms[5]
|
|
117
|
+
audiunt.modus.should == t.indicativus
|
|
118
|
+
audiunt.genus.should == t.activum
|
|
119
|
+
audiunt.tempus.should == t.praesens
|
|
120
|
+
audiunt.numerus.should == t.pl
|
|
121
|
+
audiunt.persona.should == 3
|
|
122
|
+
audiunt.to_s(true).should == "audi-u-nt"
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
context "m conj" do
|
|
127
|
+
let(:forms) do
|
|
128
|
+
args = [{ type: :praesens, stem: "cap", inflection_class: 5 }]
|
|
129
|
+
LLT::FormBuilder.build(*args)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "1.pl.ind.fut.act." do
|
|
133
|
+
capiemus = forms[55]
|
|
134
|
+
capiemus.modus.should == t.ind
|
|
135
|
+
capiemus.genus.should == t.act
|
|
136
|
+
capiemus.tempus.should == t.fut
|
|
137
|
+
capiemus.numerus.should == t.pl
|
|
138
|
+
capiemus.persona.should == 1
|
|
139
|
+
capiemus.to_s(true).should == "cap-i-e-mus"
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
context "works with deponentia" do
|
|
145
|
+
it "builds all forms" do
|
|
146
|
+
args = [{ type: :praesens, stem: "horta", inflection_class: 1, deponens: true, options: { finite: true }}]
|
|
147
|
+
forms = LLT::FormBuilder.build(*args)
|
|
148
|
+
forms.should have(35).items
|
|
149
|
+
forms.all? { |f| f.genus == :act }.should be_true
|
|
150
|
+
forms.first.to_s.should == "hortor"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
context "works with impersonalia" do
|
|
155
|
+
it "builds only 3rd person forms" do
|
|
156
|
+
args = [{ type: :praesens, stem: "oporte", inflection_class: 2, impersonalium: true, options: { finite: true }}]
|
|
157
|
+
forms = LLT::FormBuilder.build(*args)
|
|
158
|
+
forms.should have(24).items
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
context "builds all forms of" do
|
|
163
|
+
it "a conj" do
|
|
164
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { finite: true }}]
|
|
165
|
+
form_builder_strings(args).should == %w{ amo amas amat amamus amatis amant
|
|
166
|
+
amor amaris amatur amamur amamini amantur
|
|
167
|
+
amem ames amet amemus ametis ament
|
|
168
|
+
amer ameris ametur amemur amemini amentur
|
|
169
|
+
ama amate amare amamini
|
|
170
|
+
|
|
171
|
+
amabam amabas amabat amabamus amabatis amabant
|
|
172
|
+
amabar amabaris amabatur amabamur amabamini amabantur
|
|
173
|
+
amarem amares amaret amaremus amaretis amarent
|
|
174
|
+
amarer amareris amaretur amaremur amaremini amarentur
|
|
175
|
+
|
|
176
|
+
amabo amabis amabit amabimus amabitis amabunt
|
|
177
|
+
amabor amaberis amabitur amabimur amabimini amabuntur
|
|
178
|
+
amato amato amatote amanto amator amator amantor }
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "e conj" do
|
|
182
|
+
args = [{type: :praesens, stem: "mone", inflection_class: 2, options: { finite: true }}]
|
|
183
|
+
form_builder_strings(args).should == %w{ moneo mones monet monemus monetis monent
|
|
184
|
+
moneor moneris monetur monemur monemini monentur
|
|
185
|
+
moneam moneas moneat moneamus moneatis moneant
|
|
186
|
+
monear monearis moneatur moneamur moneamini moneantur
|
|
187
|
+
mone monete monere monemini
|
|
188
|
+
|
|
189
|
+
monebam monebas monebat monebamus monebatis monebant
|
|
190
|
+
monebar monebaris monebatur monebamur monebamini monebantur
|
|
191
|
+
monerem moneres moneret moneremus moneretis monerent
|
|
192
|
+
monerer monereris moneretur moneremur moneremini monerentur
|
|
193
|
+
|
|
194
|
+
monebo monebis monebit monebimus monebitis monebunt
|
|
195
|
+
monebor moneberis monebitur monebimur monebimini monebuntur
|
|
196
|
+
moneto moneto monetote monento monetor monetor monentor }
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
it "c conj" do
|
|
200
|
+
args = [{type: :praesens, stem: "leg", inflection_class: 3, options: { finite: true }}]
|
|
201
|
+
form_builder_strings(args).should == %w{ lego legis legit legimus legitis legunt
|
|
202
|
+
legor legeris legitur legimur legimini leguntur
|
|
203
|
+
legam legas legat legamus legatis legant
|
|
204
|
+
legar legaris legatur legamur legamini legantur
|
|
205
|
+
lege legite legere legimini
|
|
206
|
+
|
|
207
|
+
legebam legebas legebat legebamus legebatis legebant
|
|
208
|
+
legebar legebaris legebatur legebamur legebamini legebantur
|
|
209
|
+
legerem legeres legeret legeremus legeretis legerent
|
|
210
|
+
legerer legereris legeretur legeremur legeremini legerentur
|
|
211
|
+
|
|
212
|
+
legam leges leget legemus legetis legent
|
|
213
|
+
legar legeris legetur legemur legemini legentur
|
|
214
|
+
legito legito legitote legunto legitor legitor leguntor }
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "i conj" do
|
|
218
|
+
args = [{type: :praesens, stem: "audi", inflection_class: 4, options: { finite: true }}]
|
|
219
|
+
form_builder_strings(args).should == %w{ audio audis audit audimus auditis audiunt
|
|
220
|
+
audior audiris auditur audimur audimini audiuntur
|
|
221
|
+
audiam audias audiat audiamus audiatis audiant
|
|
222
|
+
audiar audiaris audiatur audiamur audiamini audiantur
|
|
223
|
+
audi audite audire audimini
|
|
224
|
+
|
|
225
|
+
audiebam audiebas audiebat audiebamus audiebatis audiebant
|
|
226
|
+
audiebar audiebaris audiebatur audiebamur audiebamini audiebantur
|
|
227
|
+
audirem audires audiret audiremus audiretis audirent
|
|
228
|
+
audirer audireris audiretur audiremur audiremini audirentur
|
|
229
|
+
|
|
230
|
+
audiam audies audiet audiemus audietis audient
|
|
231
|
+
audiar audieris audietur audiemur audiemini audientur
|
|
232
|
+
audito audito auditote audiunto auditor auditor audiuntor }
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it "m conj" do
|
|
236
|
+
args = [{type: :praesens, stem: "cap", inflection_class: 5, options: { finite: true }}]
|
|
237
|
+
form_builder_strings(args).should == %w{ capio capis capit capimus capitis capiunt
|
|
238
|
+
capior caperis capitur capimur capimini capiuntur
|
|
239
|
+
capiam capias capiat capiamus capiatis capiant
|
|
240
|
+
capiar capiaris capiatur capiamur capiamini capiantur
|
|
241
|
+
cape capite capere capimini
|
|
242
|
+
|
|
243
|
+
capiebam capiebas capiebat capiebamus capiebatis capiebant
|
|
244
|
+
capiebar capiebaris capiebatur capiebamur capiebamini capiebantur
|
|
245
|
+
caperem caperes caperet caperemus caperetis caperent
|
|
246
|
+
caperer capereris caperetur caperemur caperemini caperentur
|
|
247
|
+
|
|
248
|
+
capiam capies capiet capiemus capietis capient
|
|
249
|
+
capiar capieris capietur capiemur capiemini capientur
|
|
250
|
+
capito capito capitote capiunto capitor capitor capiuntor }
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
context "with praesens infinitive" do
|
|
256
|
+
it "builds all forms" do
|
|
257
|
+
args = [{ type: :praesens_infinitivum, stem: "ama", inflection_class: 1 }]
|
|
258
|
+
forms = LLT::FormBuilder.build(*args)
|
|
259
|
+
forms.should have(2).items
|
|
260
|
+
a = forms.first
|
|
261
|
+
p = forms.last
|
|
262
|
+
a.to_s(:segmentized).should == "ama-re"
|
|
263
|
+
p .to_s(:segmentized).should == "ama-ri"
|
|
264
|
+
a.genus.should == :act
|
|
265
|
+
p.genus.should == :pass
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
it "builds all forms with proper thematic" do
|
|
269
|
+
args = [{ type: :praesens_infinitivum, stem: "leg", inflection_class: 3 }]
|
|
270
|
+
forms = LLT::FormBuilder.build(*args)
|
|
271
|
+
forms.should have(2).items
|
|
272
|
+
a = forms.first
|
|
273
|
+
p = forms.last
|
|
274
|
+
a.to_s(:segmentized).should == "leg-e-re"
|
|
275
|
+
p.to_s(:segmentized).should == "leg-i"
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
context "with perfect stem" do
|
|
280
|
+
it "builds all forms" do
|
|
281
|
+
args = { type: :perfectum, stem: "amav", inflection_class: 1 }
|
|
282
|
+
forms = LLT::FormBuilder.build(args)
|
|
283
|
+
forms.should have(31).items
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
it "builds only correct forms" do
|
|
287
|
+
opts = {:ending=>"t", :extension=>"isse", :validate => true}
|
|
288
|
+
args = {:type=>:perfectum, :stem=>"ven", :inflection_class=>4, options: opts}
|
|
289
|
+
forms = LLT::FormBuilder.build(args)
|
|
290
|
+
forms.should_not be_empty
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
it "builds all forms - even for esse" do
|
|
294
|
+
args = { type: :perfectum, stem: "fu", inflection_class: :esse }
|
|
295
|
+
forms = LLT::FormBuilder.build(args)
|
|
296
|
+
forms.should have(31).items
|
|
297
|
+
end
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
context "with perfect infinitive" do
|
|
301
|
+
it "builds all forms" do
|
|
302
|
+
args = [{ type: :perfectum_infinitivum, stem: "amav", inflection_class: 1 }]
|
|
303
|
+
forms = LLT::FormBuilder.build(*args)
|
|
304
|
+
forms.should have(1).items
|
|
305
|
+
a = forms.first
|
|
306
|
+
a.to_s(:segmentized).should == "amav-isse"
|
|
307
|
+
a.genus.should == :act
|
|
308
|
+
a.tempus.should == :pf
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
context "of irregular praesens stem" do
|
|
315
|
+
context "with esse" do
|
|
316
|
+
it "builds all forms" do
|
|
317
|
+
args = [{ type: :praesens, stem: "s", inflection_class: :esse }]
|
|
318
|
+
forms = LLT::FormBuilder.build(*args)
|
|
319
|
+
forms.map(&:to_s).should == %w{
|
|
320
|
+
sum es est sumus estis sunt
|
|
321
|
+
sim sis sit simus sitis sint
|
|
322
|
+
es este
|
|
323
|
+
eram eras erat eramus eratis erant
|
|
324
|
+
essem esses esset essemus essetis essent
|
|
325
|
+
ero eris erit erimus eritis erunt
|
|
326
|
+
esto esto estote sunto
|
|
327
|
+
esse
|
|
328
|
+
}
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
context "with fieri" do
|
|
333
|
+
it "builds all forms" do
|
|
334
|
+
args = [{ type: :praesens, stem: "fi", inflection_class: :fieri }]
|
|
335
|
+
forms = LLT::FormBuilder.build(*args)
|
|
336
|
+
forms.map(&:to_s).should == %w{
|
|
337
|
+
fio fis fit fimus fitis fiunt
|
|
338
|
+
fiam fias fiat fiamus fiatis fiant
|
|
339
|
+
fiebam fiebas fiebat fiebamus fiebatis fiebant
|
|
340
|
+
fierem fieres fieret fieremus fieretis fierent
|
|
341
|
+
fiam fies fiet fiemus fietis fient
|
|
342
|
+
fieri
|
|
343
|
+
}
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
context "with malle" do
|
|
348
|
+
it "builds all forms" do
|
|
349
|
+
args = [{ type: :praesens, stem: "mal", inflection_class: :malle }]
|
|
350
|
+
forms = LLT::FormBuilder.build(*args)
|
|
351
|
+
forms.map(&:to_s).should == %w{
|
|
352
|
+
malo mavis mavult malumus mavultis malunt
|
|
353
|
+
malim malis malit malimus malitis malint
|
|
354
|
+
malebam malebas malebat malebamus malebatis malebant
|
|
355
|
+
mallem malles mallet mallemus malletis mallent
|
|
356
|
+
malam males malet malemus maletis malent
|
|
357
|
+
malle
|
|
358
|
+
}
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
context "with velle" do
|
|
363
|
+
it "builds all forms" do
|
|
364
|
+
args = [{ type: :praesens, stem: "vol", inflection_class: :velle }]
|
|
365
|
+
forms = LLT::FormBuilder.build(*args)
|
|
366
|
+
forms.map(&:to_s).should == %w{
|
|
367
|
+
volo vis vult volumus vultis volunt
|
|
368
|
+
velim velis velit velimus velitis velint
|
|
369
|
+
volebam volebas volebat volebamus volebatis volebant
|
|
370
|
+
vellem velles vellet vellemus velletis vellent
|
|
371
|
+
volam voles volet volemus voletis volent
|
|
372
|
+
velle
|
|
373
|
+
}
|
|
374
|
+
end
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
context "with posse" do
|
|
378
|
+
it "builds all forms" do
|
|
379
|
+
args = [{ type: :praesens, stem: "pot", inflection_class: :posse }]
|
|
380
|
+
forms = LLT::FormBuilder.build(*args)
|
|
381
|
+
forms.map(&:to_s).should == %w{
|
|
382
|
+
possum potes potest possumus potestis possunt
|
|
383
|
+
possim possis possit possimus possitis possint
|
|
384
|
+
poteram poteras poterat poteramus poteratis poterant
|
|
385
|
+
possem posses posset possemus possetis possent
|
|
386
|
+
potero poteris poterit poterimus poteritis poterunt
|
|
387
|
+
posse
|
|
388
|
+
}
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
context "with ire" do
|
|
393
|
+
it "builds all forms" do
|
|
394
|
+
args = [{ type: :praesens, stem: "i", inflection_class: :ire }]
|
|
395
|
+
forms = LLT::FormBuilder.build(*args)
|
|
396
|
+
forms.map(&:to_s).should == %w{
|
|
397
|
+
eo is it imus itis eunt
|
|
398
|
+
eor iris itur imur imini euntur
|
|
399
|
+
eam eas eat eamus eatis eant
|
|
400
|
+
ear earis eatur eamur eamini eantur
|
|
401
|
+
i ite ire imini
|
|
402
|
+
|
|
403
|
+
ibam ibas ibat ibamus ibatis ibant
|
|
404
|
+
ibar ibaris ibatur ibamur ibamini ibantur
|
|
405
|
+
irem ires iret iremus iretis irent
|
|
406
|
+
irer ireris iretur iremur iremini irentur
|
|
407
|
+
ibo ibis ibit ibimus ibitis ibunt
|
|
408
|
+
ibor iberis ibitur ibimur ibimini ibuntur
|
|
409
|
+
ito ito itote eunto itor itor euntor
|
|
410
|
+
ire iri
|
|
411
|
+
|
|
412
|
+
iens euntis eunti euntem iens eunte
|
|
413
|
+
euntes euntium euntibus euntes euntes euntibus
|
|
414
|
+
iens euntis eunti euntem iens eunte
|
|
415
|
+
euntes euntium euntibus euntes euntes euntibus
|
|
416
|
+
iens euntis eunti iens iens eunte
|
|
417
|
+
euntia euntium euntibus euntia euntia euntibus
|
|
418
|
+
|
|
419
|
+
eundi eundo eundum eundo
|
|
420
|
+
|
|
421
|
+
eundus eundi eundo eundum eunde eundo
|
|
422
|
+
eundi eundorum eundis eundos eundi eundis
|
|
423
|
+
eunda eundae eundae eundam eunda eunda
|
|
424
|
+
eundae eundarum eundis eundas eundae eundis
|
|
425
|
+
eundum eundi eundo eundum eundum eundo
|
|
426
|
+
eunda eundorum eundis eunda eunda eundis
|
|
427
|
+
}
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
context "with ferre" do
|
|
432
|
+
it "builds all forms" do
|
|
433
|
+
args = [{ type: :praesens, stem: "fer", inflection_class: :ferre }]
|
|
434
|
+
forms = LLT::FormBuilder.build(*args)
|
|
435
|
+
forms.map(&:to_s).should == %w{
|
|
436
|
+
fero fers fert ferimus fertis ferunt
|
|
437
|
+
feror ferris fertur ferimur ferimini feruntur
|
|
438
|
+
feram feras ferat feramus feratis ferant
|
|
439
|
+
ferar feraris feratur feramur feramini ferantur
|
|
440
|
+
|
|
441
|
+
fer ferte ferre ferimini
|
|
442
|
+
ferebam ferebas ferebat ferebamus ferebatis ferebant
|
|
443
|
+
ferebar ferebaris ferebatur ferebamur ferebamini ferebantur
|
|
444
|
+
ferrem ferres ferret ferremus ferretis ferrent
|
|
445
|
+
ferrer ferreris ferretur ferremur ferremini ferrentur
|
|
446
|
+
feram feres feret feremus feretis ferent
|
|
447
|
+
ferar fereris feretur feremur feremini ferentur
|
|
448
|
+
ferto ferto fertote ferunto fertor fertor feruntor
|
|
449
|
+
ferre ferri
|
|
450
|
+
|
|
451
|
+
ferens ferentis ferenti ferentem ferens ferente
|
|
452
|
+
ferentes ferentium ferentibus ferentes ferentes ferentibus
|
|
453
|
+
ferens ferentis ferenti ferentem ferens ferente
|
|
454
|
+
ferentes ferentium ferentibus ferentes ferentes ferentibus
|
|
455
|
+
ferens ferentis ferenti ferens ferens ferente
|
|
456
|
+
ferentia ferentium ferentibus ferentia ferentia ferentibus
|
|
457
|
+
|
|
458
|
+
ferendi ferendo ferendum ferendo
|
|
459
|
+
|
|
460
|
+
ferendus ferendi ferendo ferendum ferende ferendo
|
|
461
|
+
ferendi ferendorum ferendis ferendos ferendi ferendis
|
|
462
|
+
ferenda ferendae ferendae ferendam ferenda ferenda
|
|
463
|
+
ferendae ferendarum ferendis ferendas ferendae ferendis
|
|
464
|
+
ferendum ferendi ferendo ferendum ferendum ferendo
|
|
465
|
+
ferenda ferendorum ferendis ferenda ferenda ferendis
|
|
466
|
+
}
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
|
|
472
|
+
context "with options that select a specfic form given in a stem" do
|
|
473
|
+
context "of praesens stem" do
|
|
474
|
+
context "only forms specified in options" do
|
|
475
|
+
it "returns pr" do
|
|
476
|
+
opts = { tempus: :pr }
|
|
477
|
+
forms = verb_with_options(opts)
|
|
478
|
+
forms.should have(28).items
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
it "returns impf" do
|
|
482
|
+
opts = { tempus: :impf }
|
|
483
|
+
forms = verb_with_options(opts)
|
|
484
|
+
forms.should have(24).items
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
context "of perfect stem" do
|
|
490
|
+
context "only forms specified in options" do
|
|
491
|
+
it "returns pqpf" do
|
|
492
|
+
opts = { tempus: :pqpf }
|
|
493
|
+
forms = perf_verb_with_options(opts)
|
|
494
|
+
forms.should have(12).items
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
it "returns pf con" do
|
|
498
|
+
opts = { tempus: :pf, modus: :con }
|
|
499
|
+
forms = perf_verb_with_options(opts)
|
|
500
|
+
forms.should have(6).items
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
context "impossible forms" do
|
|
504
|
+
it "returns pf pass" do
|
|
505
|
+
opts = { tempus: :pf, genus: :pass }
|
|
506
|
+
forms = perf_verb_with_options(opts)
|
|
507
|
+
forms.should have(0).items
|
|
508
|
+
end
|
|
509
|
+
end
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
context "with options that indicate the word's components" do
|
|
515
|
+
context "of praesens stem" do
|
|
516
|
+
context "with validate flag passed" do
|
|
517
|
+
it "builds only correct forms when extension is given" do
|
|
518
|
+
opts = { extension: "re", validate: true }
|
|
519
|
+
forms = verb_with_options(opts)
|
|
520
|
+
forms.should have(12).items
|
|
521
|
+
forms.all? { |f| f.tempus == :impf }.should be_true
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
it "builds only correct forms when ending is given" do
|
|
525
|
+
opts = { ending: "nt" }
|
|
526
|
+
forms = verb_with_options(opts)
|
|
527
|
+
forms.should have(5).items
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
it "buils only correct forms when ending is given - deponentia" do
|
|
531
|
+
opts = { ending: "s", validate: true}
|
|
532
|
+
args = { type: :praesens, stem: "causa", inflection_class: 1, deponens: true, options: opts }
|
|
533
|
+
forms = LLT::FormBuilder.build(args)
|
|
534
|
+
forms.should be_empty
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
it "returns pr con" do
|
|
538
|
+
opts = { tempus: :pr, modus: :con }
|
|
539
|
+
forms = verb_with_options(opts)
|
|
540
|
+
forms.should have(12).items
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
context "of irregular praesens stem" do
|
|
545
|
+
it "build only correct forms" do
|
|
546
|
+
opts = { prefix: "", stem: "s", thematic: "u", extension: "", ending: "nt", validate: true }
|
|
547
|
+
arg = { type: :praesens, inflection_class: :esse, options: opts }
|
|
548
|
+
forms = LLT::FormBuilder.build(arg)
|
|
549
|
+
forms.should have(1).item
|
|
550
|
+
forms.first.to_s(:segmentized).should == "s-u-nt"
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
end
|
|
554
|
+
end
|
|
555
|
+
end
|
|
556
|
+
end
|
|
557
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::Form do
|
|
4
|
+
describe '#init_functions' do
|
|
5
|
+
it 'always contains a function name derived from the class name' do
|
|
6
|
+
verb = LLT::Form::Verb.new({})
|
|
7
|
+
noun = LLT::Form::Noun.new({})
|
|
8
|
+
prep = LLT::Form::Preposition.new({})
|
|
9
|
+
|
|
10
|
+
verb.functions.should include :verb
|
|
11
|
+
noun.functions.should include :noun
|
|
12
|
+
prep.functions.should include :preposition
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "#has_f?, #has_function?, #has_not_f?, #has_not_function?" do
|
|
17
|
+
it "queries an objects functions" do
|
|
18
|
+
verb = LLT::Form::Verb.new({})
|
|
19
|
+
|
|
20
|
+
verb.has_f?(:verb).should be_true
|
|
21
|
+
verb.has_function?(:noun).should be_false
|
|
22
|
+
|
|
23
|
+
verb.has_not_f?(:verb).should be_false
|
|
24
|
+
verb.has_not_function?(:noun).should be_true
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::Stem::AdjectivePack do
|
|
4
|
+
let(:ap) { LLT::Stem::AdjectivePack }
|
|
5
|
+
|
|
6
|
+
describe "#lemma" do
|
|
7
|
+
it "returns the nominative value of the positive stem" do
|
|
8
|
+
args = { nom: "altus", stem: "alt", inflectable_class: 1, number_of_endings: 3 }
|
|
9
|
+
adj = ap.new(:adjective, args, "")
|
|
10
|
+
adj.lemma.should == 'altus'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#initialize" do
|
|
15
|
+
context "returns extended stems by default, i.e. three stems: positivus, comparativus, superlativus" do
|
|
16
|
+
context "with regulars" do
|
|
17
|
+
it "builds ior and issimus" do
|
|
18
|
+
# adverb might need to follow - or they take a different path with three stems as well.
|
|
19
|
+
args = { nom: "altus", stem: "alt", inflectable_class: 1, number_of_endings: 3 }
|
|
20
|
+
|
|
21
|
+
stems = ap.new(:adjective, args, "").stems
|
|
22
|
+
stems.map(&:stem).should == %w{ alt altior altissim }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "builds ior and limus" do
|
|
26
|
+
args = { nom: "facilis", stem: "facil", inflectable_class: 3, number_of_endings: 2 }
|
|
27
|
+
|
|
28
|
+
stems = ap.new(:adjective, args, "").stems
|
|
29
|
+
stems.map(&:stem).should == %w{ facil facilior facillim }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "builds ior and rimus" do
|
|
33
|
+
args = { nom: "asper", stem: "asper", inflectable_class: 3, number_of_endings: 1 }
|
|
34
|
+
|
|
35
|
+
stems = ap.new(:adjective, args, "").stems
|
|
36
|
+
stems.map(&:stem).should == %w{ asper asperior asperrim }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "builds ior and rimus (with the e catch as in pulcher)" do
|
|
40
|
+
args = { nom: "pulcher", stem: "pulchr", inflectable_class: 1, number_of_endings: 3 }
|
|
41
|
+
|
|
42
|
+
stems = ap.new(:adjective, args, "").stems
|
|
43
|
+
# pulchrior or pulcherior?
|
|
44
|
+
stems.map(&:stem).should == %w{ pulchr pulchrior pulcherrim }
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "a comparative stem must not contain the nom info from the positivus stem" do
|
|
49
|
+
args = { nom: "altus", stem: "alt", inflectable_class: 1, number_of_endings: 3 }
|
|
50
|
+
|
|
51
|
+
stems = ap.new(:adjective, args, "").stems
|
|
52
|
+
pos = stems.find { |stem| stem.comparatio == :positivus }
|
|
53
|
+
comp = stems.find { |stem| stem.comparatio == :comparativus }
|
|
54
|
+
sup = stems.find { |stem| stem.comparatio == :superlativus }
|
|
55
|
+
|
|
56
|
+
pos .to_hash[:nom].should be_true
|
|
57
|
+
comp.to_hash[:nom].should be_false
|
|
58
|
+
sup .to_hash[:nom].should be_false
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe "#check_irregularities" do
|
|
64
|
+
it "sets an irregular adverb flag if needed" do
|
|
65
|
+
args = { nom: "bonus", stem: "bon", inflectable_class: 1, number_of_endings: 3 }
|
|
66
|
+
x = ap.new(:adjective, {}, "", false)
|
|
67
|
+
x.send(:check_irregularities, args)
|
|
68
|
+
args[:irregular_adverb].should be_true
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "builds a distinct adverb stem" do
|
|
72
|
+
args = { nom: "bonus", stem: "bon", inflectable_class: 1, number_of_endings: 3 }
|
|
73
|
+
x = ap.new(:adjective, {}, "", false)
|
|
74
|
+
x.should receive(:add)
|
|
75
|
+
x.send(:check_irregularities, args)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|