date_period_parser 0.1.3 → 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.
- 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
|