Sha256: df6f922ad7ff1a3bece79447b36d8375638b663b4b1e2ab22f1244a435c9155f

Contents?: true

Size: 817 Bytes

Versions: 1

Compression:

Stored size: 817 Bytes

Contents

require 'chronic'

module Gris
  module DateTimeHelpers
    extend ActiveSupport::Concern

    # define keys that need to be converted from strings
    # to datetime via Chronic
    def datetime_params(*keys_to_convert)
      @datetime_keys_to_convert = Set.new(keys_to_convert)
    end

    def keys_to_convert
      @datetime_keys_to_convert
    end

    def process_datetime_params(params)
      return unless keys_to_convert
      params.keys.each do |key|
        if keys_to_convert.include?(key)
          params[key] = string_to_datetime(params[key])
        end
      end
    end

    def string_to_datetime(string)
      return string if string.blank?
      if string.to_s =~ /^\d+$/
        Time.at(string.to_i).to_datetime.utc
      else
        Chronic.parse(string).try(:utc)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gris-0.2.1 lib/gris/grape_extensions/date_time_helpers.rb