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

View File

@ -29,7 +29,7 @@ from .classes import (
RepeatedSequence, RepeatedSequence,
VariableAssignment, VariableAssignment,
Variable, Variable,
Measure, Measure
) )
from .common import flatten, sum_dict from .common import flatten, sum_dict
from .defaults import DEFAULT_DURS, OPERATORS from .defaults import DEFAULT_DURS, OPERATORS
@ -459,4 +459,4 @@ class ZiffersTransformer(Transformer):
repeats=items[1], repeats=items[1],
wrap_start="", wrap_start="",
wrap_end=":" + items[1].text, wrap_end=":" + items[1].text,
) )