Fix verb conjugation with unknown verbs. Resolve #3330
This commit is contained in:
parent
5d1f93d6bf
commit
89d159cc96
2 changed files with 22 additions and 4 deletions
|
|
@ -10,11 +10,10 @@ from ast import literal_eval
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from django.test import TestCase, override_settings
|
from django.test import TestCase, override_settings
|
||||||
|
from evennia.utils import funcparser, test_resources
|
||||||
from parameterized import parameterized
|
from parameterized import parameterized
|
||||||
from simpleeval import simple_eval
|
from simpleeval import simple_eval
|
||||||
|
|
||||||
from evennia.utils import funcparser, test_resources
|
|
||||||
|
|
||||||
|
|
||||||
def _test_callable(*args, **kwargs):
|
def _test_callable(*args, **kwargs):
|
||||||
kwargs.pop("funcparser", None)
|
kwargs.pop("funcparser", None)
|
||||||
|
|
@ -471,6 +470,23 @@ class TestDefaultCallables(TestCase):
|
||||||
)
|
)
|
||||||
self.assertEqual(expected_them, ret)
|
self.assertEqual(expected_them, ret)
|
||||||
|
|
||||||
|
def test_conjugate__non_existing_verb(self):
|
||||||
|
"""
|
||||||
|
Test $conj() but with a nonsense verb. It should just return the verb as-is.
|
||||||
|
|
||||||
|
"""
|
||||||
|
string = "$You() $conj(squanch) greatly."
|
||||||
|
|
||||||
|
mapping = {"char1": self.obj1, "char2": self.obj2}
|
||||||
|
ret = self.parser.parse(
|
||||||
|
string, caller=self.obj1, receiver=self.obj1, mapping=mapping, raise_errors=True
|
||||||
|
)
|
||||||
|
self.assertEqual("You squanch greatly.", ret)
|
||||||
|
ret = self.parser.parse(
|
||||||
|
string, caller=self.obj1, receiver=self.obj2, mapping=mapping, raise_errors=True
|
||||||
|
)
|
||||||
|
self.assertEqual("Char1 squanchs greatly.", ret)
|
||||||
|
|
||||||
def test_conjugate_missing_args(self):
|
def test_conjugate_missing_args(self):
|
||||||
string = "You $conj(smile)"
|
string = "You $conj(smile)"
|
||||||
with self.assertRaises(funcparser.ParsingError):
|
with self.assertRaises(funcparser.ParsingError):
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ def verb_conjugate(verb, tense="infinitive", negate=False):
|
||||||
ind += len(verb_tenses_keys)
|
ind += len(verb_tenses_keys)
|
||||||
try:
|
try:
|
||||||
return verb_tenses[verb][ind]
|
return verb_tenses[verb][ind]
|
||||||
except IndexError:
|
except (IndexError, KeyError):
|
||||||
# TODO implement simple algorithm here with +s for certain tenses?
|
# TODO implement simple algorithm here with +s for certain tenses?
|
||||||
return verb
|
return verb
|
||||||
|
|
||||||
|
|
@ -257,7 +257,9 @@ def verb_tense(verb):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
infinitive = verb_infinitive(verb)
|
infinitive = verb_infinitive(verb)
|
||||||
data = verb_tenses[infinitive]
|
data = verb_tenses.get(infinitive)
|
||||||
|
if not data:
|
||||||
|
return infinitive
|
||||||
for tense in verb_tenses_keys:
|
for tense in verb_tenses_keys:
|
||||||
if data[verb_tenses_keys[tense]] == verb:
|
if data[verb_tenses_keys[tense]] == verb:
|
||||||
return tense
|
return tense
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue