From 035bb2fc6002a15205a3cf5a1d3feaf8c3471a53 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 25 Jul 2025 16:14:35 -0400 Subject: [PATCH] Fix matching lexer patterns containing a negated character class which includes a backslash-escaped sequence that matches more than one character --- lib/propane/regex/unit.rb | 7 ++----- spec/propane/lexer/dfa_spec.rb | 9 +++++++++ spec/propane/regex_spec.rb | 17 +++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/propane/regex/unit.rb b/lib/propane/regex/unit.rb index a286f6c..e68658f 100644 --- a/lib/propane/regex/unit.rb +++ b/lib/propane/regex/unit.rb @@ -92,11 +92,8 @@ class Propane @units = [] @negate = false end - def initialize - @units = [] - end - def method_missing(*args) - @units.__send__(*args) + def method_missing(*args, &block) + @units.__send__(*args, &block) end def <<(thing) if thing.is_a?(CharacterClassUnit) diff --git a/spec/propane/lexer/dfa_spec.rb b/spec/propane/lexer/dfa_spec.rb index 8f5789d..555a271 100644 --- a/spec/propane/lexer/dfa_spec.rb +++ b/spec/propane/lexer/dfa_spec.rb @@ -126,6 +126,15 @@ EOF ] expect(run(<