Skip to content

Commit a5550f0

Browse files
macrosoftAUTOMATIC1111
authored andcommitted
alternate prompt
1 parent 34acad1 commit a5550f0

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

‎modules/prompt_parser.py‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313

1414
schedule_parser = lark.Lark(r"""
1515
!start: (prompt | /[][():]/+)*
16-
prompt: (emphasized | scheduled | plain | WHITESPACE)*
16+
prompt: (emphasized | scheduled | alternate | plain | WHITESPACE)*
1717
!emphasized: "(" prompt ")"
1818
| "(" prompt ":" prompt ")"
1919
| "[" prompt "]"
2020
scheduled: "[" [prompt ":"] prompt ":" [WHITESPACE] NUMBER "]"
21+
alternate: "[" prompt ("|" prompt)+ "]"
2122
WHITESPACE: /\s+/
22-
plain: /([^\\\[\]():]|\\.)+/
23+
plain: /([^\\\[\]():|]|\\.)+/
2324
%import common.SIGNED_NUMBER -> NUMBER
2425
""")
2526

@@ -59,6 +60,8 @@ def scheduled(self, tree):
5960
tree.children[-1] *= steps
6061
tree.children[-1] = min(steps, int(tree.children[-1]))
6162
l.append(tree.children[-1])
63+
def alternate(self, tree):
64+
l.extend(range(1, steps+1))
6265
CollectSteps().visit(tree)
6366
return sorted(set(l))
6467

@@ -67,6 +70,8 @@ class AtStep(lark.Transformer):
6770
def scheduled(self, args):
6871
before, after, _, when = args
6972
yield before or () if step <= when else after
73+
def alternate(self, args):
74+
yield next(args[(step - 1)%len(args)])
7075
def start(self, args):
7176
def flatten(x):
7277
if type(x) == str:

0 commit comments

Comments
 (0)