date_period_parser 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/lib/date_period_parser/version.rb +1 -1
- data/lib/date_period_parser.rb +12 -11
- data/spec/date_period_parser_spec.rb +21 -11
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9568f1e71186ac31a20d9a846213116cc8f84878
|
4
|
+
data.tar.gz: 1bb0d2e0e60544311cd7f5e0f7358153edfd1ce1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8adf231887572db922d0ae3f562bc97388944a6c84a6473e225f987e81c275d71570c091fb2cc46bb135faa6c0b9ce010915a11c18533fc6f9550f5c4452d3b9
|
7
|
+
data.tar.gz: 2a8fdd8fba6e101de2f0c859411eac3a457d275e91856b2e3c2d049d31ece2cd0e94aa29c2f26d00f3a84993ed353d9a9170fa463093f470079880d71fbd0b95
|
data/README.md
CHANGED
@@ -13,6 +13,8 @@ class PostsController
|
|
13
13
|
# GET /posts?period=2015-08
|
14
14
|
def index
|
15
15
|
date_range = DatePeriodParser.range(params["period"])
|
16
|
+
# with user specific timezones
|
17
|
+
# date_range = DatePeriodParser.range(params["period"], offset: current_user.timezone)
|
16
18
|
date_range ||= DatePeriodParser.range("current-month") # default
|
17
19
|
@posts = Posts.where(created_at: date_range)
|
18
20
|
end
|
@@ -42,7 +44,7 @@ DatePeriodParse.parse("today")
|
|
42
44
|
#=> [<#DateTime 2015-08-31T00:00:00.000Z>, <#DateTime 2014-08-31T23:59:59.999Z>]
|
43
45
|
|
44
46
|
# timezone offsets
|
45
|
-
DatePeriodParse.parse("2014-12-31", "+0700")
|
47
|
+
DatePeriodParse.parse("2014-12-31", offset: "+0700")
|
46
48
|
#=> [<#DateTime 2014-12-31T00:00:00.000+0700>, <#DateTime 2014-12-31T23:59:59.999+0700>]
|
47
49
|
```
|
48
50
|
|
@@ -81,7 +83,7 @@ from # => #<DateTime 2014-01-01T00:00:00.000+0000")
|
|
81
83
|
until # => #<DateTime 2014-12-31T23:59:59.999+0000")
|
82
84
|
|
83
85
|
# offsets:
|
84
|
-
from,until = DatePeriodParser.parse("2014", "+0700")
|
86
|
+
from,until = DatePeriodParser.parse("2014", offset: "+0700")
|
85
87
|
from # => #<DateTime 2014-01-01T00:00:00.000+0700")
|
86
88
|
until # => #<DateTime 2014-12-31T23:59:59.999+0700")
|
87
89
|
|
data/lib/date_period_parser.rb
CHANGED
@@ -12,7 +12,7 @@ module DatePeriodParser
|
|
12
12
|
# until # => #<DateTime 2014-12-31T23:59:59.999+0000")
|
13
13
|
#
|
14
14
|
# # offsets:
|
15
|
-
# from,until = DatePeriodParser.parse("2014", "+0700")
|
15
|
+
# from,until = DatePeriodParser.parse("2014", offset: "+0700")
|
16
16
|
# from # => #<DateTime 2014-01-01T00:00:00.000+0700")
|
17
17
|
# until # => #<DateTime 2014-12-31T23:59:59.999+0700")
|
18
18
|
#
|
@@ -24,23 +24,23 @@ module DatePeriodParser
|
|
24
24
|
#
|
25
25
|
#
|
26
26
|
#
|
27
|
-
def parse(str,
|
28
|
-
parse!(str,
|
27
|
+
def parse(str, options = {})
|
28
|
+
parse!(str, options)
|
29
29
|
rescue ArgumentError => e
|
30
30
|
nil
|
31
31
|
end
|
32
32
|
|
33
|
-
def parse!(str,
|
34
|
-
Base.new(str,
|
33
|
+
def parse!(str, options = {})
|
34
|
+
Base.new(str, options).parse
|
35
35
|
end
|
36
36
|
|
37
|
-
def range(str,
|
38
|
-
range!(str,
|
37
|
+
def range(str, options = {})
|
38
|
+
range!(str, options)
|
39
39
|
rescue ArgumentError => e
|
40
40
|
nil
|
41
41
|
end
|
42
42
|
|
43
|
-
def range!
|
43
|
+
def range!(str, options = {})
|
44
44
|
first,last = Base.new(str, offset).parse
|
45
45
|
first..last
|
46
46
|
end
|
@@ -50,9 +50,10 @@ module DatePeriodParser
|
|
50
50
|
class Base
|
51
51
|
attr_reader :value, :offset
|
52
52
|
|
53
|
-
def initialize(value,
|
54
|
-
|
55
|
-
@
|
53
|
+
def initialize(value, options = nil)
|
54
|
+
options ||= {} # in case someone sends Base.new("", nil)
|
55
|
+
@value = value.freeze
|
56
|
+
@offset = (options[:offset] || options['offset'] || DEFAULT_OFFSET).freeze
|
56
57
|
end
|
57
58
|
|
58
59
|
def parse
|
@@ -3,8 +3,18 @@ require "minitest/autorun"
|
|
3
3
|
require 'date_period_parser'
|
4
4
|
|
5
5
|
describe DatePeriodParser do
|
6
|
-
def parse(str,
|
7
|
-
DatePeriodParser.parse(str,
|
6
|
+
def parse(str, opts = {})
|
7
|
+
DatePeriodParser.parse(str, opts)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'parse' do
|
11
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0000"), parse("2014").first
|
12
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0000"), parse("2014", nil).first
|
13
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0000"), parse("2014", {}).first
|
14
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0000"), parse("2014", {offset: nil}).first
|
15
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0000"), parse("2014", {'offset' => nil}).first
|
16
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014", {offset: "+0700"}).first
|
17
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014", {'offset' => "+0700"}).first
|
8
18
|
end
|
9
19
|
|
10
20
|
it '2014' do
|
@@ -108,24 +118,24 @@ describe DatePeriodParser do
|
|
108
118
|
|
109
119
|
describe "with offsets" do
|
110
120
|
it '2014' do
|
111
|
-
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014", "+0700").first
|
112
|
-
assert_equal DateTime.new(2014,12,31, 23, 59, 59.999, "+0700"), parse("2014", "+0700").last
|
121
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014", offset: "+0700").first
|
122
|
+
assert_equal DateTime.new(2014,12,31, 23, 59, 59.999, "+0700"), parse("2014", offset: "+0700").last
|
113
123
|
end
|
114
124
|
|
115
125
|
it '2014-01' do
|
116
|
-
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014-01", "+7").first
|
117
|
-
assert_equal DateTime.new(2014, 1,31, 23, 59, 59.999, "+0700"), parse("2014-01", "+7").last
|
126
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014-01", offset: "+7").first
|
127
|
+
assert_equal DateTime.new(2014, 1,31, 23, 59, 59.999, "+0700"), parse("2014-01", offset: "+7").last
|
118
128
|
end
|
119
129
|
|
120
130
|
it '2014-01-01' do
|
121
|
-
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014-01-01", "+7").first
|
122
|
-
assert_equal DateTime.new(2014, 1, 1, 23, 59, 59.999, "+0700"), parse("2014-01-01", "+7").last
|
131
|
+
assert_equal DateTime.new(2014, 1, 1, 0, 0, 0.000, "+0700"), parse("2014-01-01", offset: "+7").first
|
132
|
+
assert_equal DateTime.new(2014, 1, 1, 23, 59, 59.999, "+0700"), parse("2014-01-01", offset: "+7").last
|
123
133
|
end
|
124
134
|
|
125
135
|
it 'today' do
|
126
136
|
t = Date.today
|
127
|
-
assert_equal DateTime.new(t.year, t.month, t.day, 0, 0, 0.000, "+0700"), parse("today", "+7").first
|
128
|
-
assert_equal DateTime.new(t.year, t.month, t.day, 23, 59, 59.999, "+0700"), parse("today", "+7").last
|
137
|
+
assert_equal DateTime.new(t.year, t.month, t.day, 0, 0, 0.000, "+0700"), parse("today", offset: "+7").first
|
138
|
+
assert_equal DateTime.new(t.year, t.month, t.day, 23, 59, 59.999, "+0700"), parse("today", offset: "+7").last
|
129
139
|
end
|
130
140
|
end
|
131
141
|
|
@@ -147,7 +157,7 @@ describe DatePeriodParser do
|
|
147
157
|
assert_equal DateTime.parse("2014-01-01T00:00:00.000+0000"), DatePeriodParser.parse!("2014-12-41").first
|
148
158
|
end
|
149
159
|
assert_raises(ArgumentError) do
|
150
|
-
assert_equal DateTime.parse("2014-01-01T00:00:00.000+0000"), DatePeriodParser.parse!("2014-12-41", "+2400").first
|
160
|
+
assert_equal DateTime.parse("2014-01-01T00:00:00.000+0000"), DatePeriodParser.parse!("2014-12-41", offset: "+2400").first
|
151
161
|
end
|
152
162
|
end
|
153
163
|
end
|