smart-period 1.0.1 → 1.0.7

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
  SHA256:
3
- metadata.gz: 5df770ae3301222917ed286b21cd001dffedfabcbcd957b7645231a85dac6ea9
4
- data.tar.gz: bd565e152c142c751229ff4e3fd8f17f0085f6445722902fb9ba5fe75af4ddf4
3
+ metadata.gz: e2f52d692e80ad1fd610219f147275d392a3a74d127ccc52ce29fea1a6809f56
4
+ data.tar.gz: f43df7bfa7bff5caff9229979fb7dc02e91c3ebab263362118e23f37ddb473f9
5
5
  SHA512:
6
- metadata.gz: eef66c5e59a8054c20647d74cd7beb3749f6683fe359dd7f7effc31c2d659c624a3277b5378039089fd494175515d64cd77eb8a29e8a3ee3917bda65ec708b31
7
- data.tar.gz: 737039391b6228fccabf86725e55e75aa0381044ffbd7d7887d9b480d264ccbaa3b4fcead214efbdbfaa83a24c334818c365cd276140302c2a14f0a11a15de5f
6
+ metadata.gz: 527752082a31d6d62e5ea90f3b25cf963fd9721e661419d9c7b217b5bdbea56d36cf77fa29df07a95b5006ff36b772aa3b299d170512641cee1f612b77bbc230
7
+ data.tar.gz: 919552b28b752e4ffca7c29390b937f618a87b71779afbc0166a01d438d397521dfaf2e414697f860699eb5640d9f216666180ab0f3956cea224f860c778d312
@@ -1,26 +1,27 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- period (0.1.4)
5
- activesupport (= 5.2.3)
6
- i18n (= 1.6.0)
4
+ smart-period (1.0.6)
5
+ activesupport (>= 5, < 7)
6
+ i18n (~> 1)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (5.2.3)
11
+ activesupport (6.1.0)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
- i18n (>= 0.7, < 2)
14
- minitest (~> 5.1)
15
- tzinfo (~> 1.1)
16
- concurrent-ruby (1.1.6)
17
- i18n (1.6.0)
13
+ i18n (>= 1.6, < 2)
14
+ minitest (>= 5.1)
15
+ tzinfo (~> 2.0)
16
+ zeitwerk (~> 2.3)
17
+ concurrent-ruby (1.1.7)
18
+ i18n (1.8.5)
18
19
  concurrent-ruby (~> 1.0)
19
- minitest (5.14.1)
20
+ minitest (5.14.2)
20
21
  rake (10.5.0)
21
- thread_safe (0.3.6)
22
- tzinfo (1.2.7)
23
- thread_safe (~> 0.1)
22
+ tzinfo (2.0.4)
23
+ concurrent-ruby (~> 1.0)
24
+ zeitwerk (2.4.2)
24
25
 
25
26
  PLATFORMS
26
27
  ruby
@@ -28,7 +29,7 @@ PLATFORMS
28
29
  DEPENDENCIES
29
30
  bundler (~> 2.0)
30
31
  rake (~> 10.0)
31
- period!
32
+ smart-period!
32
33
 
33
34
  BUNDLED WITH
34
- 2.0.1
35
+ 2.1.2
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
- # Period
1
+ # Smart-Period [![Gem Version](https://badge.fury.io/rb/smart-period.svg)](https://badge.fury.io/rb/smart-period) [![Code Climate](https://codeclimate.com/github/billaul/period.svg)](https://codeclimate.com/github/billaul/period) [![Inline docs](http://inch-ci.org/github/billaul/period.svg)](http://inch-ci.org/github/billaul/period)
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/period`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Smart-Period aims to simplify Time-range manipulation.
6
4
 
7
5
  ## Installation
8
6
 
@@ -22,17 +20,246 @@ Or install it yourself as:
22
20
 
23
21
  ## Usage
24
22
 
25
- TODO: Write usage instructions here
23
+ **Smart-Period** was designed to simplify time-range manipulation, specialy with rails (~> 5) and user input
24
+
25
+ **Warning** :
26
+ - A time-range take place between two date and it's different from an abstract duration of time
27
+ - **Smart-Period** is limited at full day of time and will always round the starting and ending to the beginning and the ending of the day
28
+
29
+
30
+ ## Quick view (TL;DR)
31
+ ``` ruby
32
+ require 'period'
33
+
34
+ # Get all user created today
35
+ User.where(created_at: Period.today)
36
+
37
+ # Get how many weeks there is from the beginning of time ?
38
+ Period.new('01/01/1970'..Time.now).weeks.count
39
+
40
+ # Is Trump still in charge ?
41
+ Time.now.in? Period.new('20/01/2017'...'20/01/2021')
42
+
43
+ # Get the week of an arbitrary date
44
+ Period.week('24/04/1990')
45
+
46
+ # Write a date for me (I18n supported)
47
+ Period.new('20/01/2017'...'20/01/2021').to_s
48
+ => "From the 20 January 2017 to the 19 January 2021 included"
49
+ ```
50
+
51
+ ## Detailed view
52
+
53
+ There's two way to create and manipulate a period of time `FreePeriod` and `StandardPeriod`
54
+
55
+ ### FreePeriod of time
56
+
57
+ You can declare **FreePeriod** as simply as :
58
+
59
+ ```ruby
60
+ # With Date objects
61
+ Period.new(3.month.ago..Date.today)
62
+ # or with Strings
63
+ Period.new('01/01/2000'...'01/02/2000')
64
+ # or with a mix
65
+ Period.new('01/01/2000'..1.week.ago)
66
+ # or in a rails Controller with params
67
+ Period.new(params[:start_date]..params[:end_date])
68
+ ```
69
+
70
+ **FreePeriod** can be manipulated with `+` and `-`
71
+ Doing so will move the start **and** the end of the period
72
+ ```ruby
73
+ Period.new('01/01/2000'..'05/01/2000') + 3.day
74
+ # is equal to
75
+ Period.new('04/01/2000'..'08/01/2000')
76
+ ```
77
+
78
+ ### Standard Period of time
79
+
80
+ Using **StandardPeriod** you are limited to strictly bordered periods of time
81
+ These periods are `day`, `week`, `month`, `quarter` and `year`
82
+
83
+ ```ruby
84
+ # To get the week, 42th day ago
85
+ Period.week(42.day.ago)
86
+ # To get the first month of 2020
87
+ Period.month('01/01/2020')
88
+ # or if you like it verbious
89
+ Period::Month.new('01/01/2020')
90
+ # or if you need the current week
91
+ Period.week(Time.now)
92
+ ```
93
+
94
+ **Note** : If you ask for a `month`, `quarter` of `year`, the day part of your param doesn't matter `01/01/2020` give the same result as `14/01/2020` or `29/01/2020`
95
+
96
+ **StandardPeriod** can be manipulated with `+` and `-` and will always return a **StandardPeriod** of the same type
97
+ ```ruby
98
+ # Subtraction are made from the start of the period
99
+ Period.month('10/02/2000') - 1.day
100
+ # Return the previous month
101
+ # Addition are made from the end
102
+ Period.month('10/02/2000') + 1.day
103
+ # Return the next month
104
+ Period.week('10/02/2000') + 67.day
105
+ # Return a week
106
+ ```
107
+ **StandardPeriod** also respond to `.next` and `.prev`
108
+ ```ruby
109
+ Period.month('01/01/2000').next.next.next
110
+ # Return the month of April 2020
111
+ ```
112
+
113
+ You can quickly access close period of time with `.(last|this|next)_(day|week|month|quarter|year)` and `.yesterday` `.today` `.tomorrow`
114
+
115
+ ```ruby
116
+ Period.this_week
117
+ # Same as Period.week(Time.now) but shorter
118
+ Period.next_month
119
+ # Return the next month
120
+ Period.last_year
121
+ # Return the last year
122
+ Period.today
123
+ # No comment
124
+ ```
125
+
126
+ ## HasMany
127
+
128
+ **FreePeriod** and some **StandardPeriod** respond to `.days`, `.weeks`, `.months`, `.quarters` and `.years`
129
+ These methods return an array of **StandardPeriod** who are overlapping the current period
130
+
131
+ | HasMany -> [\<StandardPeriod>] | .days | .weeks | .months | .quarters | .years |
132
+ |-------------------------------|:----:|:-----:|:------:|:--------:|:-----:|
133
+ | FreePeriod | X | X | X | X | X |
134
+ | StandardPeriod::Day | | | | | |
135
+ | StandardPeriod::Week | X | | | | |
136
+ | StandardPeriod::Month | X | X | | | |
137
+ | StandardPeriod::Quarter | X | X | X | | |
138
+ | StandardPeriod::Year | X | X | X | X | |
139
+
140
+ #### Example
141
+ ```ruby
142
+ # Get how many weeks there is from the beginning of time ?
143
+ Period.new('01/01/1970'..Time.now).weeks.count
144
+ # How many day in the current quarter
145
+ Period.this_quarter.days.count
146
+ # Get all the quarters overlapping a Period of time
147
+ Period.new(...).quarters
148
+ ```
149
+
150
+ ## BelongsTo
151
+
152
+ **StandardPeriod** respond to `.day`, `.week`, `.month`, `.quarter` and `.year`
153
+ These methods return a **StandardPeriod** who include the current period
154
+ **FreePeriod** does not respond to these methods
155
+
156
+ | BelongTo -> StandardPeriod | .day | .week | .month | .quarter | .year |
157
+ |----------------------------|:---:|:----:|:-----:|:-------:|:----:|
158
+ | FreePeriod | | | | | |
159
+ | StandardPeriod::Day | | X | X | X | X |
160
+ | StandardPeriod::Week | | | X | X | X |
161
+ | StandardPeriod::Month | | | | X | X |
162
+ | StandardPeriod::Quarter | | | | | X |
163
+ | StandardPeriod::Year | | | | | |
164
+
165
+ #### Example with BelongTo and HasMany
166
+
167
+ ```ruby
168
+ # Get the first day, of the last week, of the second month, of the current year
169
+ Period.this_year.months.second.weeks.last.days.first
170
+ ```
171
+
172
+ ## ActiveRecord
173
+
174
+ As **Period** inherite from **Range**, you can natively use them in **ActiveRecord** query
175
+
176
+ ```ruby
177
+ # Get all book published this year
178
+ Book.where(published_at: Period.this_year)
179
+ ```
180
+
181
+ ## Rails Controller
182
+
183
+ In a Controller, use the error handling to validate the date for you
184
+
185
+ ```ruby
186
+ class BookController < ApplicationController
187
+ def between # match via GET and POST
188
+ # Default value for the range in GET context
189
+ params[:from] ||= 1.month.ago
190
+ params[:to] ||= Time.now
191
+
192
+ begin
193
+ # Retrieve books from the DB
194
+ @books = Book.where(published: Period.new(params[:from]..params[:to]))
195
+ rescue ArgumentError => e
196
+ # Period will handle mis-formatted date and incoherent period
197
+ # I18n is support for errors messages
198
+ flash[:alert] = e.message
199
+ end
200
+ end
201
+ end
202
+ ```
203
+
204
+ ## I18n and to_s
205
+
206
+ I18n is supported for `en` and `fr`
207
+
208
+ ```ruby
209
+ Period.new('01/01/2000'...'01/02/2001').to_s
210
+ => "From the 01 January 2000 to the 31 January 2001 included"
211
+ I18n.locale = :fr
212
+ Period.new('01/01/2000'...'01/02/2001').to_s
213
+ => "Du 01 janvier 2000 au 31 janvier 2001 inclus"
214
+ ```
215
+ Errors are also supported
216
+ ```ruby
217
+ Period.new 'Foo'..'Bar'
218
+ #=> ArgumentError (The start date is invalid)
219
+ Period.new '01/02/3030'..'Bar'
220
+ #=> ArgumentError (The end date is invalid)
221
+ Period.new '01/02/3030'..'01/01/2020'
222
+ #=> ArgumentError (The start date is greater than the end date)
223
+ ```
224
+
225
+ See `locales/en.yml` to implement your language support
226
+
227
+ If you need to change the format for a single call
228
+
229
+ ```ruby
230
+ period.to_s(format: 'Your Format')
231
+ # or
232
+ period.strftime('Your Format')
233
+ ```
234
+ For a FreePeriod or if you need to print the start and the end of your period differently, use `.i18n`
235
+ ```ruby
236
+ period.i18n do |from, to|
237
+ "You have from #{from.strftime(...)} until #{to.strftime(...)} to deliver the money !"
238
+ end
239
+ ```
240
+
241
+ ## The tricky case of Weeks
242
+
243
+ Weeks are implemented following the [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date)
244
+ So `Period.this_month.weeks.first` doesn't necessarily include the first days of the month
245
+
246
+ ## TimeZone
247
+
248
+ Time zone are supported, you have nothing to do
249
+ If you change the global `Time.zone` of your app, you have nothing to do
250
+ If your Period [begin in a time zone and end in another](https://en.wikipedia.org/wiki/Daylight_saving_time), you have nothing to do
26
251
 
27
- ## Development
252
+ ## Bug reports
28
253
 
29
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
254
+ If you discover any bugs, feel free to create an [issue on GitHub](https://github.com/billaul/period/issues)
255
+ Please add as much information as possible to help us in fixing the potential bug
256
+ We also encourage you to help even more by forking and sending us a pull request
30
257
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
258
+ No issues will be addressed outside GitHub
32
259
 
33
- ## Contributing
260
+ ## Maintainer
34
261
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/period.
262
+ * Myself (https://github.com/billaul)
36
263
 
37
264
  ## License
38
265
 
@@ -6,6 +6,7 @@ en:
6
6
  end_date_is_invalid: The end date is invalid
7
7
  start_is_greater_than_end: The start date is greater than the end date
8
8
  incomparable_error: Cannot compare Arguments
9
+ param_must_be_a_range: The parameter must inherit from the Range class
9
10
  standard_period:
10
11
  date_is_invalid: The date is invalid
11
12
  day:
@@ -7,6 +7,7 @@ fr:
7
7
  start_is_greater_than_end: Date de début supérieur à la date de fin
8
8
  incomparable_error: Les arguments ne sont pas comparables
9
9
  must_implement_to_datetime: L'argument doit repondre a "to_datetime"
10
+ param_must_be_a_range: Le paramètre doit hériter de la class Range
10
11
  standard_period:
11
12
  day:
12
13
  default_format: '%{wday} %{day} %{month} %{year}'
@@ -18,3 +19,26 @@ fr:
18
19
  default_format: '%{quarter_nb} semestre %{year}'
19
20
  year:
20
21
  default_format: '%{year}'
22
+ date:
23
+ month_names:
24
+ -
25
+ - janvier
26
+ - février
27
+ - mars
28
+ - avril
29
+ - mai
30
+ - juin
31
+ - juillet
32
+ - août
33
+ - septembre
34
+ - octobre
35
+ - novembre
36
+ - décembre
37
+ day_names:
38
+ - dimanche
39
+ - lundi
40
+ - mardi
41
+ - mercredi
42
+ - jeudi
43
+ - vendredi
44
+ - samedi
@@ -1,7 +1,7 @@
1
1
  require_relative 'period/version.rb'
2
2
  require 'active_support/all'
3
3
  require 'i18n'
4
-
4
+ require_relative 'numeric.rb'
5
5
  require_relative 'period/free_period.rb'
6
6
  require_relative 'period/day.rb'
7
7
  require_relative 'period/week.rb'
@@ -34,8 +34,8 @@ module Period
34
34
  Object.const_get("Period::#{period.capitalize}").new(date)
35
35
  end
36
36
 
37
- define_method period.to_s do
38
- Object.const_get("Period::#{period.capitalize}")
37
+ define_method period.to_s do |range|
38
+ Object.const_get("Period::#{period.capitalize}").new(range)
39
39
  end
40
40
  end
41
41
 
@@ -50,10 +50,10 @@ module Period
50
50
 
51
51
  case last_next
52
52
  when 'last'
53
- from = env_time.now
54
- from -= 1.send(klass) unless method_name.match?(/from_now$/)
55
- from = from.send("beginning_of_#{klass}")
56
- to = count.to_i.send(klass).ago.send("end_of_#{klass}")
53
+ from = count.to_i.send(klass).ago.send("beginning_of_#{klass}")
54
+ to = env_time.now
55
+ to -= 1.send(klass) unless method_name.match?(/from_now$/)
56
+ to = to.send("end_of_#{klass}")
57
57
  when 'next'
58
58
  from = env_time.now
59
59
  from += 1.send(klass) unless method_name.match?(/from_now$/)
@@ -5,9 +5,6 @@ require_relative 'has_many/months.rb'
5
5
  require_relative 'has_many/quarters.rb'
6
6
  require_relative 'has_many/years.rb'
7
7
 
8
- I18n.load_path << 'locales/fr.yml'
9
- I18n.load_path << 'locales/en.yml'
10
-
11
8
  class Period::FreePeriod < Range
12
9
  include Comparable
13
10
 
@@ -18,15 +15,16 @@ class Period::FreePeriod < Range
18
15
  include Period::HasMany::Years
19
16
 
20
17
  def initialize(range)
18
+ raise ::ArgumentError, I18n.t(:param_must_be_a_range, scope: %i[period free_period]) unless range.class.ancestors.include?(Range)
21
19
  from = range.first
22
20
  to = range.last
23
21
 
24
22
  from = time_parse(range.first, I18n.t(:start_date_is_invalid, scope: %i[period free_period])).beginning_of_day
25
23
  to = time_parse(range.last, I18n.t(:end_date_is_invalid, scope: %i[period free_period])).end_of_day
26
-
24
+ to = to.prev_day if range.exclude_end?
27
25
  raise ::ArgumentError, I18n.t(:start_is_greater_than_end, scope: %i[period free_period]) if from > to
28
26
 
29
- super(from, to, range.exclude_end?)
27
+ super(from, to)
30
28
  end
31
29
 
32
30
  alias from first
@@ -44,10 +42,6 @@ class Period::FreePeriod < Range
44
42
  raise NotImplementedError
45
43
  end
46
44
 
47
- def self.from_date(_date)
48
- raise NotImplementedError
49
- end
50
-
51
45
  def include?(other)
52
46
  if other.class.in?([DateTime, Time, ActiveSupport::TimeWithZone])
53
47
  from.to_i <= other.to_i && other.to_i <= to.to_i
@@ -74,8 +68,22 @@ class Period::FreePeriod < Range
74
68
  days.count.days
75
69
  end
76
70
 
77
- def -(other)
78
- self.class.new((from - other)..(to - other))
71
+ def -(duration)
72
+ self.class.new((from - duration)..(to - duration))
73
+ end
74
+
75
+ def +(duration)
76
+ self.class.new((from + duration)..(to + duration))
77
+ end
78
+
79
+ def ==(other)
80
+ raise ArgumentError unless other.class.ancestors.include?(Period::FreePeriod)
81
+
82
+ from == other.from && to == other.to
83
+ end
84
+
85
+ def strftime(format)
86
+ to_s(format: format)
79
87
  end
80
88
 
81
89
  def to_s(format: '%d %B %Y')
@@ -4,7 +4,6 @@ module Period
4
4
  # @note when include this module provide itterable access to the weeks of
5
5
  # the FreePeriod
6
6
  module Weeks
7
- # TODO, rewrite this to respect ISO %V %G
8
7
  def weeks
9
8
  @weeks ||= []
10
9
  return @weeks if @weeks.present?
@@ -41,12 +41,6 @@ module Period
41
41
  self.class.new(to + duration)
42
42
  end
43
43
 
44
- def ==(other)
45
- raise ArgumentError unless other.class.ancestors.include?(Period::FreePeriod)
46
-
47
- from == other.from && to == other.to
48
- end
49
-
50
44
  def iso_date
51
45
  from
52
46
  end
@@ -1,5 +1,5 @@
1
1
  module Period
2
2
 
3
- VERSION = '1.0.1'.freeze
3
+ VERSION = '1.0.7'.freeze
4
4
 
5
5
  end
@@ -6,10 +6,9 @@ Gem::Specification.new do |spec|
6
6
  spec.name = 'smart-period'
7
7
  spec.version = Period::VERSION
8
8
  spec.authors = ['billau_l']
9
- spec.email = ['billau_l@modulotech.fr']
10
9
 
11
10
  spec.summary = 'Manage time ranges without brain damage.'
12
- spec.description = "Period.new('01/01/2020'..Time.now)"
11
+ # spec.description = "Period.new('01/01/2020'..Time.now)"
13
12
  spec.homepage = "https://github.com/billaul/period"
14
13
  spec.license = 'MIT'
15
14
 
@@ -18,8 +17,10 @@ Gem::Specification.new do |spec|
18
17
  if spec.respond_to?(:metadata)
19
18
  # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
20
19
 
21
- spec.metadata["homepage_uri"] = spec.homepage
22
- # spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
20
+ spec.metadata["bug_tracker_uri"] = spec.homepage + '/issues'
21
+ spec.metadata["homepage_uri"] = spec.homepage
22
+ spec.metadata["documentation_uri"] = spec.homepage
23
+ spec.metadata["source_code_uri"] = spec.homepage
23
24
  # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
24
25
  else
25
26
  raise "RubyGems 2.0 or newer is required to protect against " \
@@ -33,10 +34,11 @@ Gem::Specification.new do |spec|
33
34
  end
34
35
  spec.bindir = 'exe'
35
36
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
- spec.require_paths = %w[lib locals]
37
+ spec.require_paths = %w[lib]
37
38
 
38
- spec.add_runtime_dependency 'activesupport', '5.2.3'
39
- spec.add_runtime_dependency 'i18n', '1.6.0'
39
+ spec.required_ruby_version = '> 2.5'
40
+ spec.add_runtime_dependency 'activesupport', '>= 5', '< 7'
41
+ spec.add_runtime_dependency 'i18n', '~> 1'
40
42
  spec.add_development_dependency 'bundler', '~> 2.0'
41
43
  spec.add_development_dependency 'rake', '~> 10.0'
42
44
  end
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart-period
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - billau_l
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-07 00:00:00.000000000 Z
11
+ date: 2021-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.3
19
+ version: '5'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '='
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: 5.2.3
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: i18n
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - '='
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: 1.6.0
39
+ version: '1'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - '='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: 1.6.0
46
+ version: '1'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -66,9 +72,8 @@ dependencies:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '10.0'
69
- description: Period.new('01/01/2020'..Time.now)
75
+ description:
70
76
  email:
71
- - billau_l@modulotech.fr
72
77
  executables: []
73
78
  extensions: []
74
79
  extra_rdoc_files: []
@@ -81,6 +86,8 @@ files:
81
86
  - Rakefile
82
87
  - bin/console
83
88
  - bin/setup
89
+ - config/locales/en.yml
90
+ - config/locales/fr.yml
84
91
  - lib/.DS_Store
85
92
  - lib/numeric.rb
86
93
  - lib/period.rb
@@ -103,24 +110,24 @@ files:
103
110
  - lib/period/version.rb
104
111
  - lib/period/week.rb
105
112
  - lib/period/year.rb
106
- - locales/en.yml
107
- - locales/fr.yml
108
113
  - period.gemspec
109
114
  homepage: https://github.com/billaul/period
110
115
  licenses:
111
116
  - MIT
112
117
  metadata:
118
+ bug_tracker_uri: https://github.com/billaul/period/issues
113
119
  homepage_uri: https://github.com/billaul/period
120
+ documentation_uri: https://github.com/billaul/period
121
+ source_code_uri: https://github.com/billaul/period
114
122
  post_install_message:
115
123
  rdoc_options: []
116
124
  require_paths:
117
125
  - lib
118
- - locals
119
126
  required_ruby_version: !ruby/object:Gem::Requirement
120
127
  requirements:
121
- - - ">="
128
+ - - ">"
122
129
  - !ruby/object:Gem::Version
123
- version: '0'
130
+ version: '2.5'
124
131
  required_rubygems_version: !ruby/object:Gem::Requirement
125
132
  requirements:
126
133
  - - ">="