Первый запуск
This commit is contained in:
45
Generator/Models/VariableLiteral.py
Normal file
45
Generator/Models/VariableLiteral.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import random
|
||||
from dataclasses import dataclass
|
||||
|
||||
from Generator.Enums.RandomType import RandomType
|
||||
from Generator.Models.Literal import Literal
|
||||
from Generator.Models.RenderResult import RenderResult
|
||||
from Generator.UniversalRandomizer import UniversalRandomizer
|
||||
|
||||
|
||||
@dataclass
|
||||
class VariableLiteral(Literal):
|
||||
name: str
|
||||
type: RandomType
|
||||
prefix: str = ""
|
||||
postfix: str = ""
|
||||
last_value: str | None = None
|
||||
|
||||
def render(self, chanse: float = 1) -> RenderResult:
|
||||
if self.last_value is None or random.random() <= chanse:
|
||||
# Генерируем значение
|
||||
val = str(UniversalRandomizer().get_random(self.type))
|
||||
self.last_value = val
|
||||
else:
|
||||
val = self.last_value
|
||||
|
||||
# Формируем строку: префикс + значение + постфикс
|
||||
full_text = f"{self.prefix}{val}{self.postfix}"
|
||||
|
||||
# Вычисляем координаты ЧИСТОГО значения (без префикса)
|
||||
start = len(self.prefix)
|
||||
end = start + len(val)
|
||||
|
||||
return RenderResult(full_text, [(start, end, self.type.name)])
|
||||
|
||||
def structure(self) -> RenderResult:
|
||||
val = f"<{self.type.name}>"
|
||||
|
||||
# Формируем строку: префикс + значение + постфикс
|
||||
full_text = f"{self.prefix}{val}{self.postfix}"
|
||||
|
||||
# Вычисляем координаты ЧИСТОГО значения (без префикса)
|
||||
start = len(self.prefix)
|
||||
end = start + len(val)
|
||||
|
||||
return RenderResult(full_text, [(start, end, self.type.name)])
|
||||
Reference in New Issue
Block a user