Added Function to evaluated items

This commit is contained in:
2023-03-03 20:11:55 +02:00
parent 115da4c96c
commit 5fd03fac6b
2 changed files with 8 additions and 4 deletions

View File

@ -2,6 +2,7 @@
from dataclasses import dataclass, field, replace, asdict
from itertools import product, islice, cycle
from math import floor
from types import LambdaType
import operator
import random
from copy import deepcopy
@ -458,7 +459,7 @@ class RomanNumeral(Event):
class Function(Event):
"""Class for functions"""
run: str = field(default=None)
run: ... = field(default=None)
@dataclass(kw_only=True)
@ -560,7 +561,10 @@ class Sequence(Meta):
options[item.variable.name] = item.value
elif isinstance(item, Variable):
if options[item.name]:
variable = deepcopy(options[item.name])
opt_item = options[item.name]
if isinstance(opt_item, LambdaType):
yield Function(run=opt_item, text=item.text, kwargs=options)
variable = deepcopy(opt_item)
yield from _resolve_item(variable, options)
elif isinstance(item, Range):
yield from item.evaluate(options)

View File

@ -29,7 +29,7 @@ from .classes import (
RepeatedSequence,
VariableAssignment,
Variable,
Measure,
Measure
)
from .common import flatten, sum_dict
from .defaults import DEFAULT_DURS, OPERATORS