From e832b30f31c56614afe689035af4e04a29e77896 Mon Sep 17 00:00:00 2001 From: Charlie Stanton Date: Fri, 21 Jul 2023 19:53:14 +0100 Subject: Adds an incredibly simple equality operator --- subex/subexast.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'subex/subexast.go') diff --git a/subex/subexast.go b/subex/subexast.go index b1ac931..e02091d 100644 --- a/subex/subexast.go +++ b/subex/subexast.go @@ -395,6 +395,20 @@ func (ast SubexASTNot) String() string { return fmt.Sprintf("(%v)!", ast.Content) } +// Runs the content Subex and collects the output +// Replaces it with true if all output values are equal and false otherwise +type SubexASTEqual struct { + Content SubexAST +} +func (ast SubexASTEqual) compileWith(next SubexState, slotMap *SlotMap, runic bool) SubexState { + return &SubexCaptureBeginState { + next: ast.Content.compileWith(&SubexArithmeticEndState { + next: next, + calculate: equalValues, + }, slotMap, runic), + } +} + // Does nothing type SubexASTEmpty struct {} func (ast SubexASTEmpty) compileWith(next SubexState, slotMap *SlotMap, runic bool) SubexState { -- cgit v1.2.3