Sha256: 18010fdf1a85606f6b0c74c9f4b0a622811ddbf5e0a3f9c85df34a8348933e99

Contents?: true

Size: 1.13 KB

Versions: 78

Compression:

Stored size: 1.13 KB

Contents

module Scrivito

  # Adds support for string columns which contain ISO dates
  module DateConversion
    def self.deserialize_from_backend(iso_date_time)
      return nil unless iso_date_time

      if iso_date_time.to_s =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/
        Time.utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i).in_time_zone
      else
        raise "The value is not a valid ISO date time: #{iso_date_time.inspect}"
      end
    end

    def self.deserialize_from_client(iso8601_date_time)
      return unless iso8601_date_time

      DateTime.iso8601(iso8601_date_time).in_time_zone
    rescue ArgumentError
      raise Scrivito::ClientError.new(
          "The value is not a valid ISO 8601 date time: #{iso8601_date_time.inspect}")
    end

    def self.serialize_for_backend(attribute_value)
      attribute_value = case attribute_value
        when Date then attribute_value.to_time
        when Time then attribute_value.to_time.utc
        end
      attribute_value.strftime('%Y%m%d%H%M%S') if attribute_value
    end

    def self.serialize_for_client(attribute_value)
      attribute_value.utc.iso8601
    end
  end

end

Version data entries

78 entries across 78 versions & 1 rubygems

Version Path
scrivito_sdk-1.18.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.18.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.17.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.17.0.rc3 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.17.0.rc2 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.17.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.16.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.16.0.rc2 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.16.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.15.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.15.0.rc2 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.15.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.14.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.14.0.rc3 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.14.0.rc2 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.14.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.13.0 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.13.0.rc2 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.13.0.rc1 app/cms/scrivito/date_conversion.rb
scrivito_sdk-1.12.0 app/cms/scrivito/date_conversion.rb