This commit is contained in:
2026-06-25 14:17:49 -04:00
parent fea93b24b8
commit 5f2d5d23fb
4 changed files with 15 additions and 13 deletions

View File

@@ -25,8 +25,8 @@ def test_generated_names_pass_filters():
with open(PACKAGE_ROOT / "assets" / "cat_names.txt") as f: with open(PACKAGE_ROOT / "assets" / "cat_names.txt") as f:
for i in f.readlines(): for i in f.readlines():
names.append(i.strip()) names.append(i.strip())
name_generator = namegen.NameGenerator(names, rules.validate_cat_name) name_generator = namegen.NameGenerator(names, rules.validate_auto_gen_cat_name)
for _ in range(10000): for _ in range(10000):
name = name_generator.generate_name() name = name_generator.generate_name()
assert rules.validate_cat_name(name, auto_gen=True) is None assert rules.validate_auto_gen_cat_name(name) is None
assert any(c in "aeiouy" for c in name.lower()) assert any(c in "aeiouy" for c in name.lower())

View File

@@ -35,5 +35,5 @@ class NameGenerator:
def generate_name(self): def generate_name(self):
while True: while True:
name = self.make_name(self.model) name = self.make_name(self.model)
if self.validate and self.validate(name, auto_gen=True) is None: if self.validate and self.validate(name) is None:
return name return name

View File

@@ -3,22 +3,24 @@ import string
from untitled import content, model from untitled import content, model
def validate_cat_name(name, auto_gen=False): def validate_cat_name(name):
ALLOWED = set(string.ascii_letters + string.digits) ALLOWED = set(string.ascii_letters + string.digits)
if not auto_gen: if len(name) < 4 or len(name) > 24:
if len(name) < 4 or len(name) > 24: return "Your cat's name must be 4-24 characters long."
return "Your cat's name must be 4-24 characters long."
else:
if len(name) < 4 or len(name) > 9:
return "Your cat's name must be greater than 3 characters and below 9 characters long."
if not any(c in "aeiou" for c in name.lower()):
return "Your cat's name must contain a vowel."
if not all(c in ALLOWED for c in name): if not all(c in ALLOWED for c in name):
return "Your cat's name can only have letters and numbers." return "Your cat's name can only have letters and numbers."
if not any(c in string.ascii_letters for c in name): if not any(c in string.ascii_letters for c in name):
return "Your cat's name needs at least 1 letter." return "Your cat's name needs at least 1 letter."
def validate_auto_gen_cat_name(name):
if len(name) < 4 or len(name) > 9:
return "Your cat's name must be greater than 3 characters and below 9 characters long."
if not any(c in "aeiou" for c in name.lower()):
return "Your cat's name must contain a vowel."
def _clamp(value, low=0, high=100): def _clamp(value, low=0, high=100):
if value < low: if value < low:
return low return low

View File

@@ -6,7 +6,7 @@ def adoption():
with open(PACKAGE_ROOT / "assets" / "cat_names.txt") as f: with open(PACKAGE_ROOT / "assets" / "cat_names.txt") as f:
for i in f.readlines(): for i in f.readlines():
names.append(i.strip()) names.append(i.strip())
name_generator = namegen.NameGenerator(names, rules.validate_cat_name) name_generator = namegen.NameGenerator(names, rules.validate_auto_gen_cat_name)
print("Welcome to the shelter!") print("Welcome to the shelter!")
while True: while True:
auto_name = "" auto_name = ""