Release v3.0.0
Summary
Replaces reactor with reaction, and makes what sets one off a first-class, extensible trigger.
Added
reaction <Name>— behavior that runs when something happens, replacingreactor(#102)- Trigger clauses on a reaction:
when <Name>for an event or a trigger,every <n> <seconds|minutes|hours|days>for an interval, andat <HH:mm>optionally narrowed byon <Weekday>oron day <n>(#102) - Bare names under a trigger select the values the occurrence hands the reaction, checked against what the event or trigger declares (#102)
where <condition>on a reaction, narrowing which occurrences run it (#102)trigger <Name>— a top-level declaration of a kind of occurrence and the values it provides (#102)TriggerDefinitionandIScreenplayLanguageRegistry.Triggers, so a consumer can register a trigger and optionally state what an occurrence carries (#102)- Built-in
StartupandShutdowntriggers (#102) - Reaction and trigger support in the Monaco language service and the VS Code extension, including completing the commands
invokescan name (#102) - Reactions and Triggers documentation pages, with the matching EBNF productions (#102)
Changed
Slice.Reactorsis nowSlice.Reactions, andReactorSyntax/ReactorTriggerSyntaxare nowReactionSyntax/ReactionTriggerSyntaxcarrying aTriggerSourceSyntax(#102)ScreenplaySyntaxWalker.VisitReactor/VisitReactorTriggerare nowVisitReaction/VisitReactionTrigger, joined byVisitTriggerandVisitTriggerData(#102)IScreenplayLanguageRegistrygains aTriggersmember (#102)PLAY0136–PLAY0139now describe reactions rather than reactors (#102)