module RailsCalendar module ControllerExtensions FORMATS = { :natural => { :date => "ddmmyy", :time => "%I:%M %p" } } def self.date_format_string(time = false) format[:date] + (time ? format[:time] : "") end def self.format @calendar_date_select_format ||= FORMATS[:natural] end def self.format=(format) raise "Date format not recognized." unless FORMATS.has_key?format @calendar_date_select_format = FORMATS[format] end def self.format_date(date) if date.is_a?(Date) date.strftime(date_format_string(false)) else date.strftime(date_format_string(true)) end end def self.format_time(value, time_needed) return value unless value.respond_to?("strftime") if time_needed format_date(value) else format_date(value.to_date) end end # Detects the presence of time in a date, string def self.has_time?(value) case value when DateTime, Time then true when Date then false else /[0-9]:[0-9]{2}/.match(value.to_s) ? true : false end end end end