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 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