Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -105,17 +105,25 @@ bool isProperNoun(const ::std::u16string &lemma);

::std::u16string SrGrammarSynthesizer_SrDisplayFunction::inflectWithRule(const ::std::map<::inflection::dialog::SemanticFeature, ::std::u16string>& constraints, const ::std::u16string& lemma) const
{
::std::u16string countString(GrammarSynthesizerUtil::getFeatureValue(constraints, numberFeature));
::std::u16string caseString(GrammarSynthesizerUtil::getFeatureValue(constraints, caseFeature));
auto countString = GrammarSynthesizerUtil::getFeatureValue(constraints, numberFeature);
auto caseString = GrammarSynthesizerUtil::getFeatureValue(constraints, caseFeature);
auto genderString = GrammarSynthesizerUtil::getFeatureValue(constraints, genderFeature);

::std::u16string inflection;

// If one of singular/plural, case and gender are not specified return lemma.
if (countString.empty() || caseString.empty() || genderString.empty()) {
if (caseString.empty()) {
return lemma;
}

// Set defaults for number and gender if missing.
if (countString.empty()) {
countString = GrammemeConstants::NUMBER_SINGULAR();
}

if (genderString.empty()) {
genderString = GrammemeConstants::GENDER_MASCULINE();
}

// Do nothing for singular, nominative.
if (countString == GrammemeConstants::NUMBER_SINGULAR() && caseString == GrammemeConstants::CASE_NOMINATIVE()) {
return lemma;
Expand Down
48 changes: 24 additions & 24 deletions inflection/test/resources/inflection/dialog/inflection/sr.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,32 @@
<test><source case="nominative" number="singular">камен</source><result>камен</result></test>
<test><source case="nominative" pos="proper-noun">Петар</source><result>Петар</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="proper-noun">Љубица</source><result>Љубице</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Србија</source><result>Србијо</result></test>
<test><source case="instrumental" number="plural" gender="masculine" pos="noun">становник</source><result>становницима</result></test>
<test><source case="vocative" number="singular" gender="feminine">Србија</source><result>Србијо</result></test>
<test><source case="instrumental" number="plural" gender="masculine">становник</source><result>становницима</result></test>
<test><source case="genitive" number="plural" gender="neuter" pos="adjective">плава</source><result>плавe</result></test>
<!-- Words not in the dictionary but similar in shape -->
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">уранак</source><result>уранче</result></test -->
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">игроказ</source><result>игрокаже</result></test -->
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">пашњак</source><result>пашњаче</result></test -->
<!-- test><source case="vocative" number="singular" gender="masculine">уранак</source><result>уранче</result></test -->
<!-- test><source case="vocative" number="singular" gender="masculine">игроказ</source><result>игрокаже</result></test -->
<!-- test><source case="vocative" number="singular" gender="masculine">пашњак</source><result>пашњаче</result></test -->
<!-- Rule based inflection, group 3, all nouns ending with a -->
<test><source case="instrumental" number="singular" gender="feminine" pos="noun">Италија</source><result>Италијом</result></test>
<test><source case="instrumental" number="singular" gender="feminine" pos="noun">авенија</source><result>авенијом</result></test>
<test><source case="locative" number="plural" gender="feminine" pos="noun">авенија</source><result>авенијама</result></test>
<test><source case="vocative" number="singular" gender="masculine" pos="noun">кадија</source><result>кадија</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="noun">уметница</source><result>уметнице</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="noun">птица</source><result>птица</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Стана</source><result>Стано</result></test>
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Зора</source><result>Зоро</result></test>
<test><source case="vocative" number="singular" gender="masculine" pos="noun">Божа</source><result>Божо</result></test>
<test><source case="vocative" number="singular" gender="masculine" pos="noun">Љуба</source><result>Љубо</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">пратња</source><result>пратњи</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">радња</source><result>радњи</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">лопта</source><result>лопти</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">молба</source><result>молби</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">конзерва</source><result>конзерви</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">гошћа</source><result>гошћа</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">двојка</source><result>двојака</result></test>
<test><source case="genitive" number="plural" gender="feminine" pos="noun">битка</source><result>битака</result></test>
<test><source case="instrumental">Италија</source><result>Италијом</result></test>
<test><source case="instrumental">авенија</source><result>авенијом</result></test>
<test><source case="locative" number="plural" gender="feminine">авенија</source><result>авенијама</result></test>
<test><source case="vocative">кадија</source><result>кадија</result></test>
<test><source case="vocative">уметница</source><result>уметнице</result></test>
<test><source case="vocative">птица</source><result>птица</result></test>
<test><source case="vocative">Стана</source><result>Стано</result></test>
<test><source case="vocative">Зора</source><result>Зоро</result></test>
<test><source case="vocative">Божа</source><result>Божо</result></test>
<test><source case="vocative">Љуба</source><result>Љубо</result></test>
<test><source case="genitive" number="plural">пратња</source><result>пратњи</result></test>
<test><source case="genitive" number="plural">радња</source><result>радњи</result></test>
<test><source case="genitive" number="plural">лопта</source><result>лопти</result></test>
<test><source case="genitive" number="plural">молба</source><result>молби</result></test>
<test><source case="genitive" number="plural">конзерва</source><result>конзерви</result></test>
<test><source case="genitive" number="plural">гошћа</source><result>гошћа</result></test>
<test><source case="genitive" number="plural">двојка</source><result>двојака</result></test>
<test><source case="genitive" number="plural">битка</source><result>битака</result></test>
<!-- There are some exception, like pripovetka where tk -> dak because of the base word. This has to be dictionary exception -->
<!-- <test><source case="genitive" number="plural" gender="feminine" pos="noun">приповетка</source><result>приповедака</result></test> -->
<!-- <test><source case="genitive" number="plural" gender="feminine">приповетка</source><result>приповедака</result></test> -->
</inflectionTest>
Loading