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(<