mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							50 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							50 lines
						
					
					
						
							1.1 KiB
						
					
					
				# frozen_string_literal: true
 | 
						|
 | 
						|
module TimeUtils
 | 
						|
  MONTH_FORMATS = {
 | 
						|
    'M' => '%-m',
 | 
						|
    'MM' => '%m',
 | 
						|
    'MMM' => '%b',
 | 
						|
    'MMMM' => '%B'
 | 
						|
  }.freeze
 | 
						|
 | 
						|
  DAY_FORMATS = {
 | 
						|
    'D' => '%-d',
 | 
						|
    'DD' => '%d'
 | 
						|
  }.freeze
 | 
						|
 | 
						|
  YEAR_FORMATS = {
 | 
						|
    'YYYY' => '%Y',
 | 
						|
    'YY' => '%y'
 | 
						|
  }.freeze
 | 
						|
 | 
						|
  DEFAULT_DATE_FORMAT_US = 'MM/DD/YYYY'
 | 
						|
  DEFAULT_DATE_FORMAT = 'DD/MM/YYYY'
 | 
						|
 | 
						|
  module_function
 | 
						|
 | 
						|
  def timezone_abbr(timezone, time = Time.current)
 | 
						|
    tz_info = TZInfo::Timezone.get(
 | 
						|
      ActiveSupport::TimeZone::MAPPING[timezone] || timezone || 'UTC'
 | 
						|
    )
 | 
						|
 | 
						|
    tz_info.abbreviation(time)
 | 
						|
  end
 | 
						|
 | 
						|
  def format_date_string(string, format, locale)
 | 
						|
    date = Date.parse(string.to_s)
 | 
						|
 | 
						|
    format ||= locale.to_s.ends_with?('US') ? DEFAULT_DATE_FORMAT_US : DEFAULT_DATE_FORMAT
 | 
						|
 | 
						|
    i18n_format = format.sub(/D+/, DAY_FORMATS[format[/D+/]])
 | 
						|
                        .sub(/M+/, MONTH_FORMATS[format[/M+/]])
 | 
						|
                        .sub(/Y+/, YEAR_FORMATS[format[/Y+/]])
 | 
						|
 | 
						|
    I18n.l(date, format: i18n_format, locale:)
 | 
						|
  rescue Date::Error => e
 | 
						|
    Rollbar.error(e) if defined?(Rollbar)
 | 
						|
 | 
						|
    string
 | 
						|
  end
 | 
						|
end
 |