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:
Jeremy Kemper 2007-12-15 02:27:11 +00:00
parent 8d8b573275
commit 3d90733e93
5 changed files with 29 additions and 9 deletions

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