Sha256: 3b0ba1eba8c9ac6b43d973b672dffc0d5971c0da8b96736eb15d2b63450f8e7f

Contents?: true

Size: 840 Bytes

Versions: 2

Compression:

Stored size: 840 Bytes

Contents

require 'active_support/all'
require 'enumerable/associate'
require 'mongoid'

module Mongoid
  class TimeRange < Hash
    def initialize(from = Time.now, to = nil)
      merge!(from: from, to: to)
    end

    [:from, :to].each do |key|
      define_method key do
        self[key]
      end
      
      define_method :"#{key}=" do |value|
        self[key] = value
      end
    end

    alias_method :to_a, :values

    def mongoize
      self.class.mongoize(self)
    end

    class << self
      def mongoize(object)
        [:from, :to].associate { |key| Time.mongoize(object[key]) }
      end

      def demongoize(hash)
        return nil if hash.nil?
        
        hash = hash.symbolize_keys
        hash = [:from, :to].associate { |key| Time.demongoize(hash[key]) }
        
        new.merge(hash)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongoid-time_range-0.4.1 lib/mongoid/time_range.rb
mongoid-time_range-0.4.0 lib/mongoid/time_range.rb