mongoid-time_range 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -10,12 +10,6 @@ In your Gemfile:
10
10
  gem 'mongoid-time_range'
11
11
  ```
12
12
 
13
- If you want to use ::TimeRange instead of Mongoid::TimeRange, your Gemfile must include a additional require statement:
14
-
15
- ```ruby
16
- gem 'mongoid-time_range', require: 'mongoid/time_range/global'
17
- ```
18
-
19
13
  ## Usage
20
14
 
21
15
  ```ruby
@@ -34,6 +28,22 @@ year2013 = Document.create(range: { from: Time.now.at_beginning_of_year, to: Tim
34
28
  year2013.range # => { from: 2013-01-01 00:00:00 +0100, to: 2013-12-31 23:59:59 +0100 }
35
29
  ```
36
30
 
31
+ If you want to use `TimeRange` directly instead of `Mongoid::TimeRange`:
32
+
33
+ ```ruby
34
+ class Document
35
+ include Mongoid::Document
36
+
37
+ field :range, type: TimeRange
38
+ end
39
+ ```
40
+
41
+ … your Gemfile must include a additional require statement:
42
+
43
+ ```ruby
44
+ gem 'mongoid-time_range', require: 'mongoid/time_range/global'
45
+ ```
46
+
37
47
  ## Contributing
38
48
 
39
49
  1. Fork it
@@ -1,10 +1,15 @@
1
+ require 'active_support/all'
1
2
  require 'enumerable/associate'
3
+ require 'mongoid'
2
4
 
3
5
  module Mongoid
4
- class TimeRange < Struct.new(:from, :to)
5
- def initialize(*)
6
- super
7
- self.from ||= Time.now
6
+ class TimeRange
7
+ attr_accessor :from, :to
8
+ delegate :inspect, :[], to: :to_h
9
+
10
+ def initialize(from = nil, to = nil)
11
+ self.from = from || Time.now
12
+ self.to = to
8
13
  end
9
14
 
10
15
  def mongoize
@@ -23,10 +28,6 @@ module Mongoid
23
28
  [from, to]
24
29
  end
25
30
 
26
- def inspect
27
- to_h.inspect
28
- end
29
-
30
31
  class << self
31
32
  def mongoize(object)
32
33
  [:from, :to].associate { |key| Time.mongoize(object[key]) }
@@ -34,6 +35,7 @@ module Mongoid
34
35
 
35
36
  def demongoize(hash)
36
37
  hash ||= {}
38
+ hash = hash.symbolize_keys
37
39
  hash = [:from, :to].associate { |key| Time.demongoize(hash[key]) }
38
40
 
39
41
  new(*hash.values)
@@ -1,7 +1,5 @@
1
- require 'mongoid/time_range'
2
-
3
1
  module Mongoid
4
2
  class TimeRange
5
- VERSION = '0.1.0'
3
+ VERSION = '0.2.0'
6
4
  end
7
5
  end
@@ -13,5 +13,6 @@ Gem::Specification.new do |gem|
13
13
  gem.files = `git ls-files`.split("\n")
14
14
  gem.require_path = 'lib'
15
15
 
16
+ gem.add_dependency 'activesupport'
16
17
  gem.add_dependency 'mongoid'
17
18
  end
@@ -9,8 +9,7 @@ describe 'Mongoid::TimeRange integration' do
9
9
 
10
10
 
11
11
  it 'sets from to current time and to to nil' do
12
- subject.range.from.to_i.must_equal Time.now.to_i
13
- subject.range.to.must_be_nil
12
+ subject.range.to_h.must_equal from: Time.now, to: nil
14
13
  end
15
14
  end
16
15
 
@@ -20,8 +19,7 @@ describe 'Mongoid::TimeRange integration' do
20
19
 
21
20
 
22
21
  it 'sets from to given time and to to nil' do
23
- subject.range.from.to_i.must_equal Time.now.beginning_of_year.to_i
24
- subject.range.to.must_be_nil
22
+ subject.range.to_h.must_equal from: Time.now.beginning_of_year, to: nil
25
23
  end
26
24
  end
27
25
 
@@ -31,8 +29,7 @@ describe 'Mongoid::TimeRange integration' do
31
29
 
32
30
 
33
31
  it 'sets from and to to given time' do
34
- subject.range.from.to_i.must_equal Time.now.beginning_of_year.to_i
35
- subject.range.to.to_i.must_equal Time.now.end_of_year.to_i
32
+ subject.range.to_h.must_equal from: Time.now.beginning_of_year, to: Time.now.end_of_year
36
33
  end
37
34
  end
38
35
 
@@ -0,0 +1,6 @@
1
+ class Time
2
+ def ==(other)
3
+ to_i == other.to_i &&
4
+ usec - (usec % 1000) == other.usec - (other.usec % 1000)
5
+ end
6
+ end
metadata CHANGED
@@ -2,15 +2,31 @@
2
2
  name: mongoid-time_range
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mario Uher
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-03 00:00:00.000000000 Z
12
+ date: 2013-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ none: false
21
+ name: activesupport
22
+ type: :runtime
23
+ prerelease: false
24
+ requirement: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ none: false
14
30
  - !ruby/object:Gem::Dependency
15
31
  version_requirements: !ruby/object:Gem::Requirement
16
32
  requirements:
@@ -49,6 +65,7 @@ files:
49
65
  - spec/support/connection.rb
50
66
  - spec/support/document.rb
51
67
  - spec/support/mongoid.yml
68
+ - spec/support/time.rb
52
69
  - spec/time_range_spec.rb
53
70
  homepage: https://github.com/haihappen/mongoid-time_range
54
71
  licenses: []