From 5fd03fac6b1b46b9a6531aaa34cd326d4cc2e2d8 Mon Sep 17 00:00:00 2001 From: Miika Alonen Date: Fri, 3 Mar 2023 20:11:55 +0200 Subject: [PATCH] Added Function to evaluated items --- ziffers/classes.py | 8 ++++++-- ziffers/mapper.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ziffers/classes.py b/ziffers/classes.py index 83b66b5..7aea6ac 100644 --- a/ziffers/classes.py +++ b/ziffers/classes.py @@ -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) diff --git a/ziffers/mapper.py b/ziffers/mapper.py index 638b3c4..c5263b2 100644 --- a/ziffers/mapper.py +++ b/ziffers/mapper.py @@ -29,7 +29,7 @@ from .classes import ( RepeatedSequence, VariableAssignment, Variable, - Measure, + Measure ) from .common import flatten, sum_dict from .defaults import DEFAULT_DURS, OPERATORS @@ -459,4 +459,4 @@ class ZiffersTransformer(Transformer): repeats=items[1], wrap_start="", wrap_end=":" + items[1].text, - ) + ) \ No newline at end of file