Sha256: 83d00c5b9742608256a1712cbdf62239b344751280aefb974c6c2887487a6a22

Contents?: true

Size: 764 Bytes

Versions: 2

Compression:

Stored size: 764 Bytes

Contents

require 'active_support/all'
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: Time.mongoize(object[:from]), to: Time.mongoize(object[:to]) }
      end

      def demongoize(hash)
        return if hash.nil?
        hash = hash.symbolize_keys

        new(Time.demongoize(hash[:from]), Time.demongoize(hash[:to]))
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongoid-time_range-0.5.1 lib/mongoid/time_range.rb
mongoid-time_range-0.5.0 lib/mongoid/time_range.rb