Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Showing
10 changed files
with
93 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,49 +1,4 @@ | |||
class Object | require 'active_support/core_ext/object/conversions' | ||
def to_param | require 'active_support/core_ext/boolean/conversions' | ||
to_s | require 'active_support/core_ext/nil/conversions' | ||
end | require 'active_support/core_ext/regexp' | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1 @@ | |||
require 'active_support/core_ext/boolean/conversions' |
11 changes: 11 additions & 0 deletions
11
activesupport/lib/active_support/core_ext/boolean/conversions.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,11 @@ | |||
class TrueClass | |||
def to_param | |||
self | |||
end | |||
end | |||
|
|||
class FalseClass | |||
def to_param | |||
self | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1 @@ | |||
require 'active_support/core_ext/nil/conversions' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,5 @@ | |||
class NilClass | |||
def to_param | |||
self | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,5 @@ | |||
class NilExtAccessTests < Test::Unit::TestCase | |||
def test_to_param | |||
assert_nil nil.to_param | |||
end | |||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -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 |
b56169c
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RegexpExtAccessTests#test_optionalize and #test_unoptionalize should be using assert_equals, not assert.