Sha256: 2d103c4cb5817887f12a8d8b03a7a4e5201125050329672260c463fc66498fae

Contents?: true

Size: 853 Bytes

Versions: 5

Compression:

Stored size: 853 Bytes

Contents

module OData4
  module Properties
    # Defines the Time OData4 type.
    class Time < OData4::Property
      # Returns the property value, properly typecast
      # @return [Time,nil]
      def value
        if (@value.nil? || @value.empty?) && allows_nil?
          nil
        else
          ::Time.strptime(@value, '%H:%M:%S%:z')
        end
      end

      # Sets the property value
      # @params new_value [Time]
      def value=(new_value)
        validate(new_value)
        @value = parse_value(new_value)
      end

      # The OData4 type name
      def type
        'Edm.Time'
      end

      private

      def validate(value)
        unless value.is_a?(::Time)
          validation_error 'Value is not a time object'
        end
      end

      def parse_value(value)
        value.strftime('%H:%M:%S%:z')
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
odata4-0.9.1 lib/odata4/properties/time.rb
odata4-0.9.0 lib/odata4/properties/time.rb
odata4-0.8.2 lib/odata4/properties/time.rb
odata4-0.8.1 lib/odata4/properties/time.rb
odata4-0.8.0 lib/odata4/properties/time.rb