From e6964315abb7c352425f15dbb127065ec08d563f Mon Sep 17 00:00:00 2001 From: Cory Sanin Date: Fri, 29 Aug 2025 02:02:00 -0500 Subject: [PATCH] improve conditions --- config/config.example.json5 | 8 ++++---- src/sequencer.ts | 2 +- test/sequencer.test.ts | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/config/config.example.json5 b/config/config.example.json5 index 826ef27..6c06c54 100644 --- a/config/config.example.json5 +++ b/config/config.example.json5 @@ -49,17 +49,17 @@ "hilo 1": { "tracks": [ "audio/hi_01.flac", - "%cory hi", + "%cory weather.temp.max", "audio/lo_01.flac", - "%cory lo" + "%cory weather.temp.min" ] }, "hilo 2": { "tracks": [ "audio/hi_02.flac", - "%cory hi", + "%cory weather.temp.max", "audio/lo_02.flac", - "%cory lo" + "%cory weather.temp.min" ] }, "rain 1": { diff --git a/src/sequencer.ts b/src/sequencer.ts index 13f6d11..d243a18 100644 --- a/src/sequencer.ts +++ b/src/sequencer.ts @@ -77,7 +77,7 @@ function processSequence(sequence: Sequence, currentWeather: CurrentWeather): st function processSegment(segment: SegmentName, currentWeather: CurrentWeather): string[] { if (!(segment in config.segments)) { - return processSequence(config.sequences[segment], currentWeather); + return (config.sequences[segment].conditions || []).every(c => conditionIsMet(c, currentWeather)) ? processSequence(config.sequences[segment], currentWeather) : []; } const potentialSequences: SequenceName[] = config.segments[segment].filter(s => (config.sequences[s].conditions || []).every(c => conditionIsMet(c, currentWeather))); if (potentialSequences.length === 0) { diff --git a/test/sequencer.test.ts b/test/sequencer.test.ts index d806fab..99b1f09 100644 --- a/test/sequencer.test.ts +++ b/test/sequencer.test.ts @@ -83,7 +83,7 @@ describe('sequencer', () => { it('can include tracks conditionally', async () => { expect(await Sequencer({ - programs: [['segment 1', 'segment 2']], + programs: [['segment 1', 'sequence 1', 'segment 2', 'sequence 2']], segments: { 'segment 1': ['sequence 1'], 'segment 2': ['sequence 2'] @@ -104,7 +104,7 @@ describe('sequencer', () => { }, voices: {}, weather: dummyWeather - })).to.be.ordered.members(['seq1.flac']); + })).to.be.ordered.members(['seq1.flac', 'seq1.flac']); }); });