From 03b7fa1157d75b43acb17da25f48eeddb68b78ee Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Tue, 7 Apr 2026 14:40:07 +0200 Subject: [PATCH] fix: catch touying pauses in groups and syncs --- src/core/setup.typ | 12 +++++++++++- src/core/utils.typ | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/core/setup.typ b/src/core/setup.typ index c064e55..538bb18 100644 --- a/src/core/setup.typ +++ b/src/core/setup.typ @@ -1,12 +1,17 @@ #import "draw/group.typ": render-end as grp-render-end #import "draw/hide.typ": render-end as hide-render-end #import "draw/sync.typ": render-end as sync-render-end -#import "utils.typ": get-group-span, is-elmt +#import "utils.typ": get-group-span, is-elmt, is-touying-pause #import "/src/participant.typ": _exists as par-exists, _par #import "/src/sequence.typ": _seq #let flatten-group(elmts, i) = { let group = elmts.at(i) + for elmt in group.elmts { + if is-touying-pause(elmt) { + panic("Cannot pause inside of a group yet") + } + } elmts.at(i) = group return ( elmts.slice(0, i + 1) + @@ -22,6 +27,11 @@ #let flatten-sync(elmts, i) = { let sync = elmts.at(i) + for elmt in sync.elmts { + if is-touying-pause(elmt) { + panic("Cannot pause inside of a sync") + } + } elmts.at(i) = sync let start = sync start.remove("elmts") diff --git a/src/core/utils.typ b/src/core/utils.typ index 0dd9ee9..12b9082 100644 --- a/src/core/utils.typ +++ b/src/core/utils.typ @@ -10,6 +10,17 @@ return true } +#let is-touying-pause(elmt) = { + if type(elmt) != content or elmt.func() != metadata { + return false + } + let kind = elmt.value.at("kind", default: "") + if type(kind) != str { + return false + } + return kind.starts-with("touying-jump") +} + #let normalize-units(value) = { if type(value) == int or type(value) == float { return value @@ -33,6 +44,12 @@ let pars-i = get-participants-i(participants) for elmt in group.elmts { + if not is-elmt(elmt) { + if is-touying-pause(elmt) { + panic("Cannot pause inside of a group yet") + } + continue + } if elmt.type == "seq" { let i1 = pars-i.at(elmt.p1) let i2 = pars-i.at(elmt.p2)