Sha256: 93628aceb3998d3cb46ad3de3249fa4219cd4f8a4f53dbe4d4e5e0a37e5500f2

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module Phlexi
  module Display
    module Components
      class DateTime < Base
        include Concerns::DisplaysValue

        # Renders the date time value
        #
        # @param value [String, Date, Time, DateTime] The value to be rendered
        # @return [void]
        def render_value(value)
          p(**attributes) { value }
        end

        protected

        def build_attributes
          super

          @options = attributes.delete(:options) || {}
          @formats = Array(@options.delete(:format)).compact + default_formats
        end

        def format_value(value)
          @formats.each do |fmt|
            return I18n.l(value, **@options, format: fmt)
          rescue
            nil
          end
        end

        def default_formats
          [:long]
        end

        def normalize_value(value)
          case value
          when ::DateTime, ::Date, ::Time
            format_value(value)
          else
            value.to_s
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
phlexi-display-0.0.12 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.11 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.10 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.9 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.8 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.7 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.6 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.5 lib/phlexi/display/components/date_time.rb
phlexi-display-0.0.4 lib/phlexi/display/components/date_time.rb