Sha256: 7c190db4ff7cf68cf0eaa1a431920202b101210dbba69696afa539676f4e368d

Contents?: true

Size: 1.32 KB

Versions: 33

Compression:

Stored size: 1.32 KB

Contents

require 'rails_base/configuration/base'

module RailsBase
  module Configuration
    class User < Base
      USER_DEFINED_KEY = 'User Defined Zone'
      USER_DEFINED_ZONE = { USER_DEFINED_KEY => ->(user) { user.last_known_timezone } }
      ACTIVE_SUPPORT_MAPPING = ActiveSupport::TimeZone::MAPPING.map do |key, value|
        [key, ->(*) { value }]
      end.to_h

      DEFAULT_TIMEZONES = {
        '' => ->(*) { ActiveSupport::TimeZone::MAPPING['UTC'] },
        nil => ->(*) { ActiveSupport::TimeZone::MAPPING['UTC'] },
      }

      ACCEPTED_TIMEZONES = DEFAULT_TIMEZONES.merge(ACTIVE_SUPPORT_MAPPING).merge(USER_DEFINED_ZONE)

      DEFAULT_VALUES = {
        timezone: {
          type: :values,
          default: USER_DEFINED_KEY,
          description: 'The timezone to display to user.',
          on_assignment: ->(val, instance) { instance._timezone_convenience },
          expect_values: ACCEPTED_TIMEZONES.keys,
        },
      }

      attr_accessor *DEFAULT_VALUES.keys

      def _timezone_convenience
        value = ACCEPTED_TIMEZONES[timezone]
        self.class.define_method('user_timezone') do |user|
          value.call(user) || ActiveSupport::TimeZone::MAPPING['UTC']
        end

        self.class.define_method('tz_user_defined?') do
          timezone == USER_DEFINED_KEY
        end
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
rails_base-0.82.0 lib/rails_base/configuration/user.rb
rails_base-0.81.1 lib/rails_base/configuration/user.rb
rails_base-0.81.0 lib/rails_base/configuration/user.rb
rails_base-0.80.0 lib/rails_base/configuration/user.rb
rails_base-0.75.6 lib/rails_base/configuration/user.rb
rails_base-0.75.5 lib/rails_base/configuration/user.rb
rails_base-0.75.4 lib/rails_base/configuration/user.rb
rails_base-0.75.3 lib/rails_base/configuration/user.rb
rails_base-0.75.2 lib/rails_base/configuration/user.rb
rails_base-0.75.1 lib/rails_base/configuration/user.rb
rails_base-0.75.0 lib/rails_base/configuration/user.rb
rails_base-0.74.0 lib/rails_base/configuration/user.rb
rails_base-0.73.1 lib/rails_base/configuration/user.rb
rails_base-0.73.0 lib/rails_base/configuration/user.rb
rails_base-0.72.1 lib/rails_base/configuration/user.rb
rails_base-0.72.0 lib/rails_base/configuration/user.rb
rails_base-0.71.0 lib/rails_base/configuration/user.rb
rails_base-0.70.1.pre lib/rails_base/configuration/user.rb
rails_base-0.70.0 lib/rails_base/configuration/user.rb
rails_base-0.61.0 lib/rails_base/configuration/user.rb