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,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
describe ".build" do
|
|
5
|
+
context "with ethnics" do
|
|
6
|
+
context "with options" do
|
|
7
|
+
it "builds only correct forms" do
|
|
8
|
+
opts = { stem: "Haedu", ending: "orum" }
|
|
9
|
+
args = { type: :ethnic, stem: "Haedu", inflection_class: 1, options: opts }
|
|
10
|
+
forms = LLT::FormBuilder.build(args)
|
|
11
|
+
forms.should have(2).items
|
|
12
|
+
forms.first.to_s.should == "Haeduorum" # check if it's still capitalized
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
+
it "has a version" do
|
|
13
|
+
LLT::FormBuilder::VERSION.should_not be_nil
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
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 fp" do
|
|
13
|
+
it "builds all forms - a conj" do
|
|
14
|
+
args = [{type: :fp, stem: "amat", inflection_class: 1, tense: :pf}]
|
|
15
|
+
form_builder_strings(args).should == %w{ amaturus amaturi amaturo amaturum amature amaturo amaturi amaturorum amaturis amaturos amaturi amaturis
|
|
16
|
+
amatura amaturae amaturae amaturam amatura amatura amaturae amaturarum amaturis amaturas amaturae amaturis
|
|
17
|
+
amaturum amaturi amaturo amaturum amaturum amaturo amatura amaturorum amaturis amatura amatura amaturis }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "with options that select a specfic form given in a stem" do
|
|
21
|
+
it "builds correct forms only (several possibilities)" do
|
|
22
|
+
options = { casus: 2 }
|
|
23
|
+
args = [{type: :fp, stem: "amat", inflection_class: 1,
|
|
24
|
+
tense: :fut, options: options}]
|
|
25
|
+
forms = LLT::FormBuilder.build(*args)
|
|
26
|
+
|
|
27
|
+
forms.should have(6).items
|
|
28
|
+
form = forms[2]
|
|
29
|
+
|
|
30
|
+
form.casus.should == 2
|
|
31
|
+
form.numerus.should == 1
|
|
32
|
+
form.sexus.should == :f
|
|
33
|
+
|
|
34
|
+
form.participium?.should be_true
|
|
35
|
+
|
|
36
|
+
form.tempus.should == t.fut
|
|
37
|
+
form.genus.should == t.act
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
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 gerunds" do
|
|
13
|
+
context "build all forms" do
|
|
14
|
+
it "a conj" do
|
|
15
|
+
args = [{type: :gerund, stem: "ama", inflection_class: 1, tense: :pr}]
|
|
16
|
+
forms = LLT::FormBuilder.build(*args)
|
|
17
|
+
forms.map(&:to_s).should == %w{ amandi amando amandum amando }
|
|
18
|
+
forms[0].casus.should == 2
|
|
19
|
+
forms[3].casus.should == 6
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "c conj" do
|
|
23
|
+
args = [{type: :gerund, stem: "leg", inflection_class: 3, tense: :pr}]
|
|
24
|
+
forms = LLT::FormBuilder.build(*args)
|
|
25
|
+
forms.map(&:to_s).should == %w{ legendi legendo legendum legendo }
|
|
26
|
+
forms[0].casus.should == 2
|
|
27
|
+
forms[3].casus.should == 6
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "with options that select a specfic form given in a stem" do
|
|
33
|
+
context "with gerunds" do
|
|
34
|
+
it "builds correct forms only (several possibilities)" do
|
|
35
|
+
options = { casus: 4 }
|
|
36
|
+
args = [{type: :gerund, stem: "ama", inflection_class: 1, options: options}]
|
|
37
|
+
forms = LLT::FormBuilder.build(*args)
|
|
38
|
+
|
|
39
|
+
forms.should have(1).items
|
|
40
|
+
form = forms[0]
|
|
41
|
+
|
|
42
|
+
form.casus.should == 4
|
|
43
|
+
form.numerus.should == 1
|
|
44
|
+
form.sexus.should == :n
|
|
45
|
+
form.ending.should == "um"
|
|
46
|
+
form.extension.should == "nd"
|
|
47
|
+
|
|
48
|
+
form.gerund?.should be_true
|
|
49
|
+
|
|
50
|
+
form.tempus.should be_nil
|
|
51
|
+
form.genus.should be_nil
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "builds correct forms only, ending given" do
|
|
55
|
+
options = { ending: "um" }
|
|
56
|
+
args = [{type: :gerund, stem: "ama", inflection_class: 1, options: options}]
|
|
57
|
+
forms = LLT::FormBuilder.build(*args)
|
|
58
|
+
forms.should have(1).item
|
|
59
|
+
forms.first.casus.should == 4
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
context "with validate flag" do
|
|
63
|
+
it "doesn't build forms when extension is not given" do
|
|
64
|
+
options = { ending: "um", validate: true }
|
|
65
|
+
args = [{type: :gerund, stem: "ama", inflection_class: 1, options: options}]
|
|
66
|
+
forms = LLT::FormBuilder.build(*args)
|
|
67
|
+
forms.should be_empty
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "needs the extension to be given" do
|
|
71
|
+
options = { ending: "um", extension: "nd", validate: true }
|
|
72
|
+
args = [{type: :gerund, stem: "ama", inflection_class: 1, options: options}]
|
|
73
|
+
forms = LLT::FormBuilder.build(*args)
|
|
74
|
+
forms.should have(1).items
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
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 gerundiva" do
|
|
13
|
+
context "build all forms" do
|
|
14
|
+
it "a conj" do
|
|
15
|
+
args = [{type: :gerundive, stem: "ama", inflection_class: 1, tense: :pr}]
|
|
16
|
+
form_builder_strings(args).should == %w{ amandus amandi amando amandum amande amando amandi amandorum amandis amandos amandi amandis
|
|
17
|
+
amanda amandae amandae amandam amanda amanda amandae amandarum amandis amandas amandae amandis
|
|
18
|
+
amandum amandi amando amandum amandum amando amanda amandorum amandis amanda amanda amandis }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "m conj" do
|
|
22
|
+
args = [{type: :gerundive, stem: "cap", inflection_class: 5, tense: :pr}]
|
|
23
|
+
form_builder_strings(args).should == %w{ capiendus capiendi capiendo capiendum capiende capiendo capiendi capiendorum capiendis capiendos capiendi capiendis
|
|
24
|
+
capienda capiendae capiendae capiendam capienda capienda capiendae capiendarum capiendis capiendas capiendae capiendis
|
|
25
|
+
capiendum capiendi capiendo capiendum capiendum capiendo capienda capiendorum capiendis capienda capienda capiendis }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "with options that select a specfic form given in a stem" do
|
|
31
|
+
context "with gerundives" do
|
|
32
|
+
it "builds correct forms only (several possibilities)" do
|
|
33
|
+
options = { numerus: 2 }
|
|
34
|
+
args = [{type: :gerundive, stem: "ama", inflection_class: 1, options: options}]
|
|
35
|
+
forms = LLT::FormBuilder.build(*args)
|
|
36
|
+
|
|
37
|
+
forms.should have(18).items
|
|
38
|
+
form = forms.last
|
|
39
|
+
|
|
40
|
+
form.casus.should == 6
|
|
41
|
+
form.numerus.should == 2
|
|
42
|
+
form.sexus.should == :n
|
|
43
|
+
form.ending.should == "is"
|
|
44
|
+
form.extension.should == "nd"
|
|
45
|
+
|
|
46
|
+
form.gerundive?.should be_true
|
|
47
|
+
|
|
48
|
+
form.tempus.should be_nil
|
|
49
|
+
form.genus.should be_nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "builds correct forms only, ending given" do
|
|
53
|
+
options = { ending: "um" }
|
|
54
|
+
args = [{type: :gerundive, stem: "ama", inflection_class: 1, options: options}]
|
|
55
|
+
forms = LLT::FormBuilder.build(*args)
|
|
56
|
+
forms.should have(4).items
|
|
57
|
+
forms.map(&:casus).should == [4, 1, 4, 5]
|
|
58
|
+
forms.map(&:sexus).should == %i{ m n n n }
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context "with validate flag" do
|
|
62
|
+
it "needs the extension to be given" do
|
|
63
|
+
options = { ending: "um", extension: "nd", validate: true }
|
|
64
|
+
args = [{type: :gerundive, stem: "ama", inflection_class: 1, options: options}]
|
|
65
|
+
forms = LLT::FormBuilder.build(*args)
|
|
66
|
+
forms.should have(4).items
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "doesn't build forms when extension is not given" do
|
|
70
|
+
# no extension given, no result
|
|
71
|
+
options = { ending: "um", validate: true }
|
|
72
|
+
args = [{type: :gerundive, stem: "ama", inflection_class: 1, options: options}]
|
|
73
|
+
forms = LLT::FormBuilder.build(*args)
|
|
74
|
+
forms.should be_empty
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "with archaic forms" do
|
|
78
|
+
let(:archaic_forms) do
|
|
79
|
+
options = { thematic: "u", extension: "nd", ending: "i", validate: true }
|
|
80
|
+
args = { type: :gerundive, stem: "audi", inflection_class: 4, options: options }
|
|
81
|
+
LLT::FormBuilder.build(args)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "builds the correct forms" do
|
|
85
|
+
archaic_forms.should have(4).items
|
|
86
|
+
archaic_forms.map(&:numerus).should =~ [1, 2, 2, 1]
|
|
87
|
+
archaic_forms.map(&:casus).should =~ [2, 1, 5, 2]
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "produces the correct string value for archaic forms" do
|
|
91
|
+
archaic_forms.map(&:to_s).should == %w{ audiundi } * 4
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "marks forms as archaic" do
|
|
95
|
+
archaic_forms.map(&:classification).should == %i{ archaic } * 4
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder::StemHashParser do
|
|
4
|
+
def shp(arg)
|
|
5
|
+
LLT::FormBuilder::StemHashParser.new(arg)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
include LLT::Helpers::Normalizer
|
|
9
|
+
|
|
10
|
+
describe "#parse" do
|
|
11
|
+
context "with praesens" do
|
|
12
|
+
it "changes type to gerund and gerundive with options extensions: 'nd'" do
|
|
13
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { extension: "nd" }}]
|
|
14
|
+
shp(args).parse.should =~ [{type: :gerund, stem: "ama", inflection_class: 1, options: { extension: "nd" }},
|
|
15
|
+
{type: :gerundive, stem: "ama", inflection_class: 1, options: { extension: "nd" }} ]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "changes type to gerund with options modus: 'gerund'" do
|
|
19
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { modus: "gerund" }}]
|
|
20
|
+
shp(args).parse.should =~ [{type: :gerund, stem: "ama", inflection_class: 1, options: { modus: :gerundium }}]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "changes type to gerundive with options modus: 'gerundive'" do
|
|
24
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { modus: "gerundive" }}]
|
|
25
|
+
shp(args).parse.should =~ [{type: :gerundive, stem: "ama", inflection_class: 1, options: { modus: :gerundivum }}]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "changes type to ppa with options extension: 'nt' or 'n'" do
|
|
29
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { extension: "n" }}]
|
|
30
|
+
shp(args).parse.should =~ [{type: :ppa, stem: "ama", inflection_class: 1, options: { extension: "n" }}]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "changes type to ppa with options modus: 'participle'" do
|
|
34
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { modus: :participium }}]
|
|
35
|
+
shp(args).parse.should =~ [{type: :ppa, stem: "ama", inflection_class: 1, options: { modus: :part }}]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "changes type to ppa with options modus: 'infinitive'" do
|
|
39
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1, options: { modus: :infinitive }}]
|
|
40
|
+
shp(args).parse.should =~ [{type: :praesens_infinitivum, stem: "ama", inflection_class: 1, options: { modus: :inf }}]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "returns hashes of the types praesens praesens_infinitivum ppa gerund gerundive without options" do
|
|
44
|
+
args = [{type: :praesens, stem: "ama", inflection_class: 1}]
|
|
45
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ praesens praesens_infinitivum ppa gerund gerundive }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
context "confronted with irregulars" do
|
|
49
|
+
it "returns irregular prasens and no verbal nouns for esse" do
|
|
50
|
+
args = [{type: :praesens, inflection_class: :esse}]
|
|
51
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "returns irregular prasens and no verbal nouns for esse" do
|
|
55
|
+
opts = {:stem=>"es", :ending=>"se"}
|
|
56
|
+
args = [{type: :praesens, inflection_class: :esse, options: opts}]
|
|
57
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
it "handles options with ease for irregulars" do
|
|
62
|
+
opts = { ending: "nt", thematic: "u", stem: "s", prefix: "", extension: "" }
|
|
63
|
+
args = [{type: :praesens, inflection_class: :esse, options: opts}]
|
|
64
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "returns irregular prasens and no verbal nouns for fieri" do
|
|
68
|
+
args = [{type: :praesens, inflection_class: :fieri}]
|
|
69
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "returns irregular prasens and no verbal nouns for velle" do
|
|
73
|
+
args = [{type: :praesens, inflection_class: :velle}]
|
|
74
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "returns irregular prasens and no verbal nouns for malle" do
|
|
78
|
+
args = [{type: :praesens, inflection_class: :malle}]
|
|
79
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "returns irregular prasens and no verbal nouns for edere" do
|
|
83
|
+
args = [{type: :praesens, inflection_class: :edere}]
|
|
84
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "returns irregular prasens and nouns for ferre" do
|
|
88
|
+
args = [{type: :praesens, inflection_class: :ferre}]
|
|
89
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum ppa gerund gerundive }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "returns irregular prasens and verbal nouns for ire" do
|
|
93
|
+
args = [{type: :praesens, inflection_class: :ire}]
|
|
94
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum irregular_ppa irregular_gerund irregular_gerundive }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "returns irregular prasens and no verbal nouns for posse" do
|
|
98
|
+
args = [{type: :praesens, inflection_class: :posse}]
|
|
99
|
+
shp(args).parse.map { |h| h[:type] }.should =~ %i{ irregular_praesens irregular_praesens_infinitivum }
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "with perfectum" do
|
|
105
|
+
it "changes type to perfectum_infinitivum with options modus: 'infinitive'" do
|
|
106
|
+
args = [{type: :perfectum, stem: "amav", inflection_class: 1, options: { modus: :infinitive }}]
|
|
107
|
+
shp(args).parse.should =~ [{type: :perfectum_infinitivum, stem: "amav", inflection_class: 1, options: { modus: :inf }}]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "returns perfectum and perfectum_infinitivum without options" do
|
|
111
|
+
args = [{type: :perfectum, stem: "amav", inflection_class: 1 }]
|
|
112
|
+
shp(args).parse.should =~ [{type: :perfectum, stem: "amav", inflection_class: 1},
|
|
113
|
+
{type: :perfectum_infinitivum, stem: "amav", inflection_class: 1}]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "returns perfectum with detailed options like venisset has" do
|
|
117
|
+
opts = {:ending=>"t", :extension=>"isse", :validate => true}
|
|
118
|
+
args = [{:type=>:perfectum, :stem=>"ven", :inflection_class=>4, options: opts}]
|
|
119
|
+
shp(args).parse.should =~ [{type: :perfectum, stem: "ven", inflection_class: 4, options: opts}]
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
context "with ppp" do
|
|
124
|
+
it "changes type to fp with options extensions: 'ur'" do
|
|
125
|
+
args = [{type: :ppp, stem: "amat", inflection_class: 1, options: { extension: "ur" }}]
|
|
126
|
+
shp(args).parse.should =~ [{type: :fp, stem: "amat", inflection_class: 1, options: { extension: "ur" }}]
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "changes type to ... with options modus: 'participle'" do
|
|
130
|
+
args = [{type: :ppp, stem: "amat", inflection_class: 1, options: { modus: :participium }}]
|
|
131
|
+
shp(args).parse.should =~ [{type: :ppp, stem: "amat", inflection_class: 1, options: { modus: :part }},
|
|
132
|
+
{type: :fp, stem: "amat", inflection_class: 1, options: { modus: :part }} ]
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it "changes type supinum with options modus: 'supinum'" do
|
|
136
|
+
args = [{type: :ppp, stem: "amat", inflection_class: 1, options: { modus: :supinum }}]
|
|
137
|
+
shp(args).parse.should =~ [{type: :supinum, stem: "amat", inflection_class: 1, options: { modus: :supinum } }]
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "returns ppp, fp and supinum without options" do
|
|
141
|
+
args = [{type: :ppp, stem: "amat", inflection_class: 1}]
|
|
142
|
+
shp(args).parse.should =~ [{type: :ppp, stem: "amat", inflection_class: 1 },
|
|
143
|
+
{type: :fp, stem: "amat", inflection_class: 1 },
|
|
144
|
+
{type: :supinum, stem: "amat", inflection_class: 1 }]
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
context "with adjectives" do
|
|
149
|
+
it "returns adjective and adverb stems" do
|
|
150
|
+
args = [{type: :adjective, stem: "alt", inflection_class: 1, comparatio: :positivus}]
|
|
151
|
+
shp(args).parse.should =~ [ {type: :adjective, stem: "alt", inflection_class: 1, comparatio: :positivus},
|
|
152
|
+
{type: :adverb, stem: "alt", inflection_class: 1, comparatio: :positivus}]
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "corrects the comparativus stem" do
|
|
156
|
+
args = [{type: :adjective, stem: "altior", inflection_class: 1, comparatio: :comparativus}]
|
|
157
|
+
shp(args).parse.should =~ [ {type: :adjective, stem: "altior", inflection_class: 1, comparatio: :comparativus},
|
|
158
|
+
{type: :adverb, stem: "altius", inflection_class: 1, comparatio: :comparativus}]
|
|
159
|
+
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "returns only adjecive stem when irregular adverb building is present" do
|
|
163
|
+
args = [{type: :adjective, stem: "bon", inflection_class: 1, comparatio: :positivus, irregular_adverb: true}]
|
|
164
|
+
shp(args).parse.should =~ [ {type: :adjective, stem: "bon", inflection_class: 1, comparatio: :positivus, irregular_adverb: true} ]
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
context "with pronouns" do
|
|
169
|
+
context "with quisque" do
|
|
170
|
+
it "returns substantivic AND adjectivic stem, when options come with ending is" do
|
|
171
|
+
args = [{type: :pronoun, inflection_class: :quisque, options: { ending: "is"} }]
|
|
172
|
+
stems = shp(args).parse
|
|
173
|
+
stems.should have(2).items
|
|
174
|
+
stems.map { |st| st[:inflection_class] }.should == %i{ quisque quisque_s }
|
|
175
|
+
|
|
176
|
+
args = [{type: :pronoun, inflection_class: :quisque_s, options: { ending: "is"} }]
|
|
177
|
+
stems = shp(args).parse
|
|
178
|
+
stems.should have(2).items
|
|
179
|
+
stems.map { |st| st[:inflection_class] }.should == %i{ quisque quisque_s }
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
context "with unusquisque" do
|
|
185
|
+
it "works like quisque" do
|
|
186
|
+
args = [{type: :pronoun, inflection_class: :unusquisque, options: { ending: "is"} }]
|
|
187
|
+
stems = shp(args).parse
|
|
188
|
+
stems.should have(2).items
|
|
189
|
+
stems.map { |st| st[:inflection_class] }.should == %i{ unusquisque unusquisque_s }
|
|
190
|
+
|
|
191
|
+
args = [{type: :pronoun, inflection_class: :unusquisque_s, options: { ending: "is"} }]
|
|
192
|
+
stems = shp(args).parse
|
|
193
|
+
stems.should have(2).items
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
describe ".build" do
|
|
5
|
+
context "with irregular gerundiva" do
|
|
6
|
+
context "with gerundives" do
|
|
7
|
+
context "with options that select a specfic form given in a stem" do
|
|
8
|
+
context "with validate flag" do
|
|
9
|
+
it "builds correct forms only" do
|
|
10
|
+
options = { prefix: "ad", ending: "um" }
|
|
11
|
+
args = [{type: :irregular_gerund, inflection_class: :ferre, options: options}]
|
|
12
|
+
forms = LLT::FormBuilder.build(*args)
|
|
13
|
+
forms.should have(1).item
|
|
14
|
+
forms.first.to_s(:segmentized).should == "ad-fer-e-nd-um"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
describe ".build" do
|
|
5
|
+
context "with irregular gerundiva" do
|
|
6
|
+
context "with gerundives" do
|
|
7
|
+
context "with options that select a specfic form given in a stem" do
|
|
8
|
+
context "with validate flag" do
|
|
9
|
+
it "builds correct forms only" do
|
|
10
|
+
options = { prefix: "ad", ending: "um" }
|
|
11
|
+
args = [{type: :irregular_gerundive, inflection_class: :ferre, options: options}]
|
|
12
|
+
forms = LLT::FormBuilder.build(*args)
|
|
13
|
+
forms.should have(4).items
|
|
14
|
+
forms.first.to_s(:segmentized).should == "ad-fer-e-nd-um"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
describe ".build" do
|
|
5
|
+
context "with options" do
|
|
6
|
+
it "builds the form fiebat" do
|
|
7
|
+
opts = {:stem=>"fi", :thematic=>"e", :extension=>"ba", :ending=>"t", validate: true}
|
|
8
|
+
args = { type: :praesens, inflection_class: :fieri, options: opts}
|
|
9
|
+
forms = LLT::FormBuilder.build(args)
|
|
10
|
+
forms.should have(1).item
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe LLT::FormBuilder do
|
|
4
|
+
describe ".build" do
|
|
5
|
+
context "with irregular praesens infinitive" do
|
|
6
|
+
context "with options" do
|
|
7
|
+
it "builds the form esse" do
|
|
8
|
+
opts = {:stem=>"es", :ending=>"se"}
|
|
9
|
+
args = { type: :praesens, inflection_class: :esse, options: opts}
|
|
10
|
+
forms = LLT::FormBuilder.build(args)
|
|
11
|
+
forms.should have(1).item
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "builds the form posse" do
|
|
15
|
+
opts = {:stem=>"pos", :ending=>"se"}
|
|
16
|
+
args = { type: :praesens, inflection_class: :posse, options: opts}
|
|
17
|
+
forms = LLT::FormBuilder.build(args)
|
|
18
|
+
forms.should have(1).item
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "builds the form abesse" do
|
|
22
|
+
opts = {:stem=>"es", :prefix=>"ab", :ending=>"se"}
|
|
23
|
+
args = { type: :praesens, inflection_class: :esse, options: opts}
|
|
24
|
+
forms = LLT::FormBuilder.build(args)
|
|
25
|
+
forms.should have(1).item
|
|
26
|
+
forms.first.to_s(:segmentized).should == "ab-es-se"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|