Class: Bronze::Transforms::Attributes::DateTransform

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

Overview

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

Constant Summary collapse

ISO_8601 =

Format string for ISO 8601 date format. Equivalent to YYYY-MM-DD.

'%F'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(format = ISO_8601) ⇒ DateTransform

Returns a new instance of DateTransform.

Parameters:

  • format (String) (defaults to: ISO_8601)

    The format string used to normalize and denormalize dates. The default is ISO 8601 format.



21
22
23
# File 'lib/bronze/transforms/attributes/date_transform.rb', line 21

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

Instance Attribute Details

#formatString (readonly)

Returns the format string.

Returns:

  • (String)

    the format string.



26
27
28
# File 'lib/bronze/transforms/attributes/date_transform.rb', line 26

def format
  @format
end

Class Method Details

.instanceDateTransform

Returns a memoized instance of DateTransform.

Returns:



15
16
17
# File 'lib/bronze/transforms/attributes/date_transform.rb', line 15

def self.instance
  @instance ||= new
end

Instance Method Details

#denormalize(value) ⇒ Date

Converts a formatted Date string to a Date instance.

Parameters:

  • value (String)

    The normalized string.

Returns:

  • (Date)

    the parsed date.



33
34
35
36
37
38
39
# File 'lib/bronze/transforms/attributes/date_transform.rb', line 33

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

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

  Date.strptime(value, read_format)
end

#normalize(value) ⇒ String

Converts a Date to a formatted string.

Parameters:

  • value (Date)

    The Date to format.

Returns:

  • (String)

    the formatted string.



46
47
48
49
50
# File 'lib/bronze/transforms/attributes/date_transform.rb', line 46

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

  value.strftime(format)
end