Ruby 1.9 compat: prefer builtin String#starts_ and ends_with? if available [chuyeow]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8397 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
8d8b573275
commit
3d90733e93
@ -10,14 +10,14 @@ module EvenOdd
|
||||
def multiple_of?(number)
|
||||
self % number == 0
|
||||
end
|
||||
|
||||
|
||||
def even?
|
||||
multiple_of? 2
|
||||
end
|
||||
|
||||
end if RUBY_VERSION < '1.9'
|
||||
|
||||
def odd?
|
||||
!even?
|
||||
end
|
||||
end if RUBY_VERSION < '1.9'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,9 +1,9 @@
|
||||
module ActiveSupport #:nodoc:
|
||||
module CoreExtensions #:nodoc:
|
||||
module Range #:nodoc:
|
||||
# Getting dates in different convenient string representations and other objects
|
||||
# Getting ranges in different convenient string representations and other objects
|
||||
module Conversions
|
||||
DATE_FORMATS = {
|
||||
RANGE_FORMATS = {
|
||||
:db => Proc.new { |start, stop| "BETWEEN '#{start.to_s(:db)}' AND '#{stop.to_s(:db)}'" }
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ def self.included(base) #:nodoc:
|
||||
end
|
||||
|
||||
def to_formatted_s(format = :default)
|
||||
DATE_FORMATS[format] ? DATE_FORMATS[format].call(first, last) : to_default_s
|
||||
RANGE_FORMATS[format] ? RANGE_FORMATS[format].call(first, last) : to_default_s
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -10,7 +10,12 @@ class String #:nodoc:
|
||||
include ActiveSupport::CoreExtensions::String::Access
|
||||
include ActiveSupport::CoreExtensions::String::Conversions
|
||||
include ActiveSupport::CoreExtensions::String::Inflections
|
||||
include ActiveSupport::CoreExtensions::String::StartsEndsWith
|
||||
if RUBY_VERSION < '1.9'
|
||||
include ActiveSupport::CoreExtensions::String::StartsEndsWith
|
||||
else
|
||||
alias starts_with? start_with?
|
||||
alias ends_with? end_with?
|
||||
end
|
||||
if defined? ActiveSupport::CoreExtensions::String::Iterators
|
||||
include ActiveSupport::CoreExtensions::String::Iterators
|
||||
end
|
||||
|
@ -3,6 +3,13 @@ module CoreExtensions #:nodoc:
|
||||
module String #:nodoc:
|
||||
# Additional string tests.
|
||||
module StartsEndsWith
|
||||
def self.included(base)
|
||||
base.class_eval do
|
||||
alias_method :start_with?, :starts_with?
|
||||
alias_method :end_with?, :ends_with?
|
||||
end
|
||||
end
|
||||
|
||||
# Does the string start with the specified +prefix+?
|
||||
def starts_with?(prefix)
|
||||
prefix = prefix.to_s
|
||||
|
@ -143,15 +143,23 @@ def test_access_returns_a_real_string
|
||||
assert_equal %w(hello), hash.keys
|
||||
end
|
||||
|
||||
def test_starts_ends_with
|
||||
def test_starts_ends_with_alias
|
||||
s = "hello"
|
||||
assert s.starts_with?('h')
|
||||
assert s.starts_with?('hel')
|
||||
assert !s.starts_with?('el')
|
||||
|
||||
assert s.start_with?('h')
|
||||
assert s.start_with?('hel')
|
||||
assert !s.start_with?('el')
|
||||
|
||||
assert s.ends_with?('o')
|
||||
assert s.ends_with?('lo')
|
||||
assert !s.ends_with?('el')
|
||||
|
||||
assert s.end_with?('o')
|
||||
assert s.end_with?('lo')
|
||||
assert !s.end_with?('el')
|
||||
end
|
||||
|
||||
# FIXME: Ruby 1.9
|
||||
|
Loading…
Reference in New Issue
Block a user