Class: Bronze::Transforms::Attributes::DateTimeTransform

Inherits:
Bronze::Transform show all
Defined in:
lib/bronze/transforms/attributes/date_time_transform.rb

Overview

Transform class that normalizes a DateTime to a formatted string representation.

Constant Summary collapse

ISO_8601 =

Format string for ISO 8601 date+time format. Equivalent to YYYY-MM-DDTHH:MM:SS+ZZZZ.

'%FT%T%z'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(format = ISO_8601) ⇒ DateTimeTransform



23
24
25
# File 'lib/bronze/transforms/attributes/date_time_transform.rb', line 23

def initialize(format = ISO_8601)
  @format = format
end

Instance Attribute Details

#formatString (readonly)



28
29
30
# File 'lib/bronze/transforms/attributes/date_time_transform.rb', line 28

def format
  @format
end

Class Method Details

.instanceDateTimeTransform



17
18
19
# File 'lib/bronze/transforms/attributes/date_time_transform.rb', line 17

def self.instance
  @instance ||= new
end

Instance Method Details

#denormalize(value) ⇒ DateTime

Converts a formatted DateTime string to a Date instance.



35
36
37
38
39
40
41
# File 'lib/bronze/transforms/attributes/date_time_transform.rb', line 35

def denormalize(value)
  return value if value.is_a?(DateTime)

  return nil if value.nil? || value.empty?

  DateTime.strptime(value, read_format)
end

#normalize(value) ⇒ String

Converts a DateTime to a formatted string.



48
49
50
51
52
# File 'lib/bronze/transforms/attributes/date_time_transform.rb', line 48

def normalize(value)
  return nil if value.nil?

  value.strftime(format)
end