From f67dd62b20de9360488668f46cfdad4a79fd2729 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 9 Jun 2021 22:37:00 -0400 Subject: [PATCH] Add \s to expand to whitespace characters --- lib/imbecile/regex.rb | 9 +++++++++ lib/imbecile/regex/unit.rb | 9 +++++++++ spec/imbecile_spec.rb | 13 +++++++++++++ 3 files changed, 31 insertions(+) diff --git a/lib/imbecile/regex.rb b/lib/imbecile/regex.rb index 999c194..59b22b7 100644 --- a/lib/imbecile/regex.rb +++ b/lib/imbecile/regex.rb @@ -136,6 +136,15 @@ module Imbecile case c when "d" CharacterRangeUnit.new("0", "9") + when "s" + ccu = CharacterClassUnit.new + ccu << CharacterRangeUnit.new(" ") + ccu << CharacterRangeUnit.new("\t") + ccu << CharacterRangeUnit.new("\r") + ccu << CharacterRangeUnit.new("\n") + ccu << CharacterRangeUnit.new("\f") + ccu << CharacterRangeUnit.new("\v") + ccu else CharacterRangeUnit.new(c) end diff --git a/lib/imbecile/regex/unit.rb b/lib/imbecile/regex/unit.rb index d1d643b..f1d4ff6 100644 --- a/lib/imbecile/regex/unit.rb +++ b/lib/imbecile/regex/unit.rb @@ -98,6 +98,15 @@ module Imbecile def method_missing(*args) @units.__send__(*args) end + def <<(thing) + if thing.is_a?(CharacterClassUnit) + thing.each do |ccu_unit| + @units << ccu_unit + end + else + @units << thing + end + end def last_unit @units[-1] end diff --git a/spec/imbecile_spec.rb b/spec/imbecile_spec.rb index 352158a..d175035 100644 --- a/spec/imbecile_spec.rb +++ b/spec/imbecile_spec.rb @@ -90,6 +90,19 @@ EOF expect(run(<