--- /dev/null
+module ActiveSupport #:nodoc:
+ module CoreExtensions #:nodoc:
+ module Range #:nodoc:
+ # Getting ranges in different convenient string representations and other objects
+ module Conversions
+ RANGE_FORMATS = {
+ :db => Proc.new { |start, stop| "BETWEEN '#{start.to_s(:db)}' AND '#{stop.to_s(:db)}'" }
+ }
+
+ def self.included(base) #:nodoc:
+ base.class_eval do
+ alias_method :to_default_s, :to_s
+ alias_method :to_s, :to_formatted_s
+ end
+ end
+ # Gives a human readable format of the range.
+ #
+ # ==== Example:
+ #
+ # [1..100].to_formatted_s # => "1..100"
+ def to_formatted_s(format = :default)
+ RANGE_FORMATS[format] ? RANGE_FORMATS[format].call(first, last) : to_default_s
+ end
+ end
+ end
+ end
+end