class Datetime::DatetimeComponent

Constants

DAY_ARGS
DISPLAY_TIME_ARGS
FULL_DATETIME_ARGS
MONTH_ARGS
WEEKDAY_ARGS
YEAR_ARGS

Public Class Methods

new(custom_datetime_format: '', full_datetime: :null, date_separator: '/', weekday: :null, day: :null, month: :null, year: :null, display_time: :null, display_timezone: false, display_zone_offset: false, time_zone: 'UTC') click to toggle source
Calls superclass method
# File lib/datetimecomponent.rb, line 18
def initialize(custom_datetime_format: '', full_datetime: :null, date_separator: '/', weekday: :null,
               day: :null, month: :null, year: :null, display_time: :null, display_timezone: false,
               display_zone_offset: false, time_zone: 'UTC')
  super
  @_routes = nil
  @date_separator = date_separator
  @time_zone = TZInfo::Timezone.get(time_zone)
  @datetime_format = custom_datetime_format
  return unless @datetime_format.empty?
  
  @format_args = {}
  @format_args[:full_datetime] = FULL_DATETIME_ARGS[full_datetime]
  @format_args[:weekday] = WEEKDAY_ARGS[weekday]
  @format_args[:day] = DAY_ARGS[day]
  @format_args[:month] = MONTH_ARGS[month]
  @format_args[:year] = YEAR_ARGS[year]
  @format_args[:display_time] = DISPLAY_TIME_ARGS[display_time]
  @format_args[:display_timezone] = display_timezone ? '%Z' : ''
  @format_args[:zone_offset] = display_zone_offset ? 'UTC %:z' : ''
  @datetime_format = build_datetime_format
end

Private Instance Methods

build_dateformat() click to toggle source
# File lib/datetimecomponent.rb, line 57
def build_dateformat
  date_format = @format_args[:day]
  
  unless @format_args[:month].empty?
    date_format += @format_args[:month] == MONTH_ARGS[:numeric] ? @date_separator : ' '
    date_format += @format_args[:month]
  end
  
  unless @format_args[:year].empty?
    date_format += @format_args[:month] == MONTH_ARGS[:numeric] ? @date_separator : ' '
    date_format += @format_args[:year]
  end
  date_format
end
build_datetime_format() click to toggle source

rubocop:enable Metrics/ParameterLists

# File lib/datetimecomponent.rb, line 43
def build_datetime_format
  datetime_format = @format_args[:full_datetime]
  return "#{datetime_format} #{@format_args[:zone_offset]}" unless datetime_format.empty?
  
  datetime_format += @format_args[:weekday]
  datetime_format += ', ' if !datetime_format.empty? && !@format_args[:day].empty?
  
  datetime_format += build_dateformat
  datetime_format += ', ' if !datetime_format.empty? && !@format_args[:display_time].empty?
  
  datetime_format += build_timeformat
  datetime_format
end
build_timeformat() click to toggle source
# File lib/datetimecomponent.rb, line 72
def build_timeformat
  time_format = @format_args[:display_time]
  time_format += ' ' unless @format_args[:display_time].empty?
  time_format += @format_args[:display_timezone]
  time_format += ' ' unless @format_args[:display_timezone].empty?
  time_format += @format_args[:zone_offset]
  time_format
end