mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
moves reopening of core classes to add generic stuff from Action Pack to AS/core_ext and adds tests
[#2798 state:committed] Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
This commit is contained in:
parent
9eeb5fed2f
commit
b56169c262
10 changed files with 93 additions and 49 deletions
|
@ -1,49 +1,4 @@
|
|||
class Object
|
||||
def to_param
|
||||
to_s
|
||||
end
|
||||
end
|
||||
|
||||
class TrueClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
class FalseClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
class NilClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
class Regexp #:nodoc:
|
||||
def number_of_captures
|
||||
Regexp.new("|#{source}").match('').captures.length
|
||||
end
|
||||
|
||||
def multiline?
|
||||
options & MULTILINE == MULTILINE
|
||||
end
|
||||
|
||||
class << self
|
||||
def optionalize(pattern)
|
||||
case unoptionalize(pattern)
|
||||
when /\A(.|\(.*\))\Z/ then "#{pattern}?"
|
||||
else "(?:#{pattern})?"
|
||||
end
|
||||
end
|
||||
|
||||
def unoptionalize(pattern)
|
||||
[/\A\(\?:(.*)\)\?\Z/, /\A(.|\(.*\))\?\Z/].each do |regexp|
|
||||
return $1 if regexp =~ pattern
|
||||
end
|
||||
return pattern
|
||||
end
|
||||
end
|
||||
end
|
||||
require 'active_support/core_ext/object/conversions'
|
||||
require 'active_support/core_ext/boolean/conversions'
|
||||
require 'active_support/core_ext/nil/conversions'
|
||||
require 'active_support/core_ext/regexp'
|
||||
|
|
1
activesupport/lib/active_support/core_ext/boolean.rb
Normal file
1
activesupport/lib/active_support/core_ext/boolean.rb
Normal file
|
@ -0,0 +1 @@
|
|||
require 'active_support/core_ext/boolean/conversions'
|
|
@ -0,0 +1,11 @@
|
|||
class TrueClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
class FalseClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
1
activesupport/lib/active_support/core_ext/nil.rb
Normal file
1
activesupport/lib/active_support/core_ext/nil.rb
Normal file
|
@ -0,0 +1 @@
|
|||
require 'active_support/core_ext/nil/conversions'
|
|
@ -0,0 +1,5 @@
|
|||
class NilClass
|
||||
def to_param
|
||||
self
|
||||
end
|
||||
end
|
25
activesupport/lib/active_support/core_ext/regexp.rb
Normal file
25
activesupport/lib/active_support/core_ext/regexp.rb
Normal file
|
@ -0,0 +1,25 @@
|
|||
class Regexp #:nodoc:
|
||||
def number_of_captures
|
||||
Regexp.new("|#{source}").match('').captures.length
|
||||
end
|
||||
|
||||
def multiline?
|
||||
options & MULTILINE == MULTILINE
|
||||
end
|
||||
|
||||
class << self
|
||||
def optionalize(pattern)
|
||||
case unoptionalize(pattern)
|
||||
when /\A(.|\(.*\))\Z/ then "#{pattern}?"
|
||||
else "(?:#{pattern})?"
|
||||
end
|
||||
end
|
||||
|
||||
def unoptionalize(pattern)
|
||||
[/\A\(\?:(.*)\)\?\Z/, /\A(.|\(.*\))\?\Z/].each do |regexp|
|
||||
return $1 if regexp =~ pattern
|
||||
end
|
||||
return pattern
|
||||
end
|
||||
end
|
||||
end
|
9
activesupport/test/core_ext/boolean_ext_test.rb
Normal file
9
activesupport/test/core_ext/boolean_ext_test.rb
Normal file
|
@ -0,0 +1,9 @@
|
|||
class BooleanExtAccessTests < Test::Unit::TestCase
|
||||
def test_to_param_on_true
|
||||
assert_equal true, true.to_param
|
||||
end
|
||||
|
||||
def test_to_param_on_false
|
||||
assert_equal false, false.to_param
|
||||
end
|
||||
end
|
5
activesupport/test/core_ext/nil_ext_test.rb
Normal file
5
activesupport/test/core_ext/nil_ext_test.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
class NilExtAccessTests < Test::Unit::TestCase
|
||||
def test_to_param
|
||||
assert_nil nil.to_param
|
||||
end
|
||||
end
|
|
@ -5,4 +5,10 @@ class ObjectExtTest < Test::Unit::TestCase
|
|||
foo = Object.new
|
||||
assert_equal foo, foo.tap { |x| assert_equal foo, x; :bar }
|
||||
end
|
||||
|
||||
def test_to_param
|
||||
foo = Object.new
|
||||
foo.class_eval("def to_s; 'foo'; end")
|
||||
assert_equal 'foo', foo.to_param
|
||||
end
|
||||
end
|
||||
|
|
26
activesupport/test/core_ext/regexp_ext_test.rb
Normal file
26
activesupport/test/core_ext/regexp_ext_test.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
class RegexpExtAccessTests < Test::Unit::TestCase
|
||||
def test_number_of_captures
|
||||
assert_equal 0, //.number_of_captures
|
||||
assert_equal 1, /.(.)./.number_of_captures
|
||||
assert_equal 2, /.(.).(?:.).(.)/.number_of_captures
|
||||
assert_equal 3, /.((.).(?:.).(.))/.number_of_captures
|
||||
end
|
||||
|
||||
def test_multiline
|
||||
assert //m.multiline?
|
||||
assert ! //.multiline?
|
||||
assert ! /(?m:)/.multiline?
|
||||
end
|
||||
|
||||
def test_optionalize
|
||||
assert "a?", Regexp.optionalize("a")
|
||||
assert "(?:foo)?", Regexp.optionalize("foo")
|
||||
assert "", Regexp.optionalize("")
|
||||
end
|
||||
|
||||
def test_unoptionalize
|
||||
assert "a", Regexp.unoptionalize("a?")
|
||||
assert "foo", Regexp.unoptionalize("(?:foo)")
|
||||
assert "", Regexp.unoptionalize("")
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue