From 70661d39b8f4d74673bb9a4e568f727ede4f0173 Mon Sep 17 00:00:00 2001 From: nojhan Date: Sun, 5 Apr 2026 19:00:18 +0200 Subject: [PATCH] feat: adds consume.sections --- src/forthlift/forthlift.py | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/forthlift/forthlift.py b/src/forthlift/forthlift.py index 31bb264..3f22fbd 100755 --- a/src/forthlift/forthlift.py +++ b/src/forthlift/forthlift.py @@ -49,6 +49,26 @@ class consume: current = "" return pars + class sections(Consume): + def __init__(self, mark = r"^#", skip = "False"): + self.mark = mark + self.skip = bool(skip) + + def __call__(self, stream): + sec = [] + current = "" + for item in stream.readlines(): + if re.match(self.mark, item[0]): + sec.append( current ) + if self.skip: + current = "" + else: + current = item + else: + current += item + sec.append( current ) + return sec + class format: class Format: def __call__(self, items): @@ -317,8 +337,11 @@ def main(): asked.lift = ["stdout"] logger.debug("Chosen operators:") + + cop,cargs = list(operator([asked.consume]))[0] + forthlift = Forthlifter( - consumer = consumers[asked.consume](), + consumer = consumers[cop](*cargs), streamers = [streamers[op](*args) for op,args in operator(asked.stream)], formatters = [formaters[op](*args) for op,args in operator(asked.format)], lifters = [ lifters[op](*args) for op,args in operator(asked.lift )],