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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50f01a223cc9dd3cc0aa207a58574c52c1bf8d55
4
- data.tar.gz: d377682cd50e84844206f31f71f2d12615e5a1ec
3
+ metadata.gz: 9568f1e71186ac31a20d9a846213116cc8f84878
4
+ data.tar.gz: 1bb0d2e0e60544311cd7f5e0f7358153edfd1ce1
5
5
  SHA512:
6
- metadata.gz: b025ae4f53aa7a07d64f7f40d7490e7c88663096af413e8c686a18006ceabeccb8ab4924df79192b00d589974caf02eb55733fc980f0c6e801509cf5d6c62239
7
- data.tar.gz: 92d85586e7ee87b2cdec6cf7c0d99e58f2fd323f07a40e9a91dd6f314908d8a7c1a6fed0c4566bafc02d3ef1f8b7121f0f7e9130389510d4f7bba5799a041efe
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
 
@@ -1,3 +1,3 @@
1
1
  module DatePeriodParser
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -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, offset = nil)
28
- parse!(str, offset)
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, offset = nil)
34
- Base.new(str, offset).parse
33
+ def parse!(str, options = {})
34
+ Base.new(str, options).parse
35
35
  end
36
36
 
37
- def range(str, offset = nil)
38
- range!(str, offset)
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, offset = nil)
54
- @value = value.freeze
55
- @offset = (offset || DEFAULT_OFFSET).freeze
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, offset = nil)
7
- DatePeriodParser.parse(str, offset)
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date_period_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - hasclass