From 0e8185f907b9f243c363f9ddd4157635246f6bb3 Mon Sep 17 00:00:00 2001 From: Jeffrey Hardy Date: Wed, 26 Aug 2009 12:10:42 -0400 Subject: [PATCH] Correct Regexp#un/optionalize assertions and fix uncovered failures --- .../lib/active_support/core_ext/regexp.rb | 2 ++ activesupport/test/core_ext/regexp_ext_test.rb | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/activesupport/lib/active_support/core_ext/regexp.rb b/activesupport/lib/active_support/core_ext/regexp.rb index 1a04c70..95d06ee 100644 --- a/activesupport/lib/active_support/core_ext/regexp.rb +++ b/activesupport/lib/active_support/core_ext/regexp.rb @@ -9,6 +9,8 @@ class Regexp #:nodoc: class << self def optionalize(pattern) + return pattern if pattern == "" + case unoptionalize(pattern) when /\A(.|\(.*\))\Z/ then "#{pattern}?" else "(?:#{pattern})?" diff --git a/activesupport/test/core_ext/regexp_ext_test.rb b/activesupport/test/core_ext/regexp_ext_test.rb index f710998..be06a59 100644 --- a/activesupport/test/core_ext/regexp_ext_test.rb +++ b/activesupport/test/core_ext/regexp_ext_test.rb @@ -13,14 +13,14 @@ class RegexpExtAccessTests < Test::Unit::TestCase end def test_optionalize - assert "a?", Regexp.optionalize("a") - assert "(?:foo)?", Regexp.optionalize("foo") - assert "", Regexp.optionalize("") + assert_equal "a?", Regexp.optionalize("a") + assert_equal "(?:foo)?", Regexp.optionalize("foo") + assert_equal "", Regexp.optionalize("") end def test_unoptionalize - assert "a", Regexp.unoptionalize("a?") - assert "foo", Regexp.unoptionalize("(?:foo)") - assert "", Regexp.unoptionalize("") + assert_equal "a", Regexp.unoptionalize("a?") + assert_equal "foo", Regexp.unoptionalize("(?:foo)?") + assert_equal "", Regexp.unoptionalize("") end end \ No newline at end of file -- 1.6.3.3