what_date 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: dfdc633523771b3eb74c5c7aae7c454d2e312f715b3d5322a4e094af0f6502bd
4
- data.tar.gz: b14e6c35441f9b2b0b387dc095575f5e489a40938239d7e0f32122a1a7425070
3
+ metadata.gz: 79d947d42c8a1beb11fcbc8327ac2933f7c0cd4a19dfb4cb07adaf48ce6402e7
4
+ data.tar.gz: eab41983ec577e1aabb9d3abace7a74197c0d56409bb51427ff2d77c0cba98cc
5
5
  SHA512:
6
- metadata.gz: 24298eb526c237523332c74012f7521b884923df15702e60a72e9a2a32d7698551784158b5a9fd664ab097d77a55e375e9b4020344492a4d0975572981602518
7
- data.tar.gz: 7c23a014673de2137aa861f69100ae9a905475df98daaa70593f4eaefb877d70ab311d2abfefa9a52c6c3b2a5427bb7f657909f2d3dd77e70ff8bb390f455fdd
6
+ metadata.gz: d3a8e5c833ba814f98a8ca0c08e8768f7b2edd3caed7ce311d2ae04b78664b96ac962394138eb672f419c3f29dfa0fd18cce5f63d7a7e9d8e13419e0487d1dc5
7
+ data.tar.gz: 4c83b1bede76efe2eafe93c58094a86f86a1af451a1c9a16a5ea26c4044f85551792677ed019383c39cd5f38c93af266a6c33a7808c2f0845871407db6ba0e61
data/README.md CHANGED
@@ -17,11 +17,26 @@ Or install it yourself as:
17
17
  $ gem install what_date
18
18
 
19
19
  ## Usage
20
-
20
+ You can query the date of any day in the current week, the previous week or the following week. You can supply a date so the query is relative to the week of the given date
21
21
  ```
22
+ ## initialize client
22
23
  $client = WhatDate.client
24
+
25
+ ## get dates
23
26
  $client.friday
24
27
  $client.tuesday(Date.new(2018,2,3)) ##date of tuesday in the week of the given date
28
+ $client.prev_tuesday
29
+ $client.next_tuesday
30
+
31
+ ```
32
+ You can also ask for the date of a particular day of a given month. Use ordinals such as first, second and up to fifth. But'last' does not work yet.
33
+
34
+ ```
35
+ $client.first_monday_of_june_2018
36
+ $##4 June 2018
37
+ $client.third_tuesday_of_may_2018
38
+ $##19 June 2018
39
+
25
40
  ```
26
41
 
27
42
  ## Development
@@ -1,7 +1,10 @@
1
1
  require 'active_support'
2
2
  require 'active_support/core_ext/date/calculations'
3
+ require 'what_date/date_of_month'
4
+
3
5
  module WhatDate
4
6
  class Client
7
+ include WhatDate::DateOfMonth
5
8
 
6
9
  Date::DAYS_INTO_WEEK.each do |day, inc|
7
10
  define_method(day) do |ref_date=nil|
@@ -9,5 +12,18 @@ module WhatDate
9
12
  ref_date.monday.days_since(inc)
10
13
  end
11
14
  end
15
+
16
+ Date::DAYS_INTO_WEEK.each do |day, inc|
17
+ define_method("prev_#{day.to_s}".to_sym) do |ref_date = nil|
18
+ send(day, ref_date).days_ago(7)
19
+ end
20
+ end
21
+
22
+ Date::DAYS_INTO_WEEK.each do |day, inc|
23
+ define_method("next_#{day.to_s}".to_sym) do |ref_date = nil|
24
+ send(day, ref_date).days_since(7)
25
+ end
26
+ end
27
+
12
28
  end
13
29
  end
@@ -0,0 +1,33 @@
1
+ module WhatDate
2
+ module DateOfMonth
3
+
4
+ def date_of_month(order:1, day:, month:, year: Date.today.year)
5
+ month_int = Date::MONTHNAMES.index(month)
6
+ first_date = Date.new(year, month_int, 1)
7
+ first_day = first_date.wday
8
+ lookup = Date::DAYNAMES.index(day.titleize)
9
+ if lookup < first_day
10
+ inc = (order - 1) * 7 + (lookup - first_day + 8)
11
+ else
12
+ inc = (order - 1) * 7 + (lookup - first_day + 1)
13
+ end
14
+ Date.new(year, month_int, inc)
15
+ end
16
+
17
+
18
+ def method_missing(meth, *args)
19
+ if meth.to_s =~ /^(first||second||third||fourth||fifth)_(monday||tuesday||wednesday||thursday||friday||saturday||sunday)_of_[A-Za-z]+_\d+$/
20
+ methods = meth.to_s.split("_")
21
+ order = { "first" => 1, "second" => 2, "third" => 3, "fourth" => 4, "fifth" => 5 }[methods[0]]
22
+ day = methods[1].titleize
23
+ month = methods[3].titleize
24
+ year = methods[4].to_i
25
+ date_of_month(order: order, day: day, month: month, year: year)
26
+ else
27
+ super
28
+ end
29
+ end
30
+
31
+
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module WhatDate
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/what_date.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["zorro.ej@gmail.com"]
11
11
 
12
12
  spec.summary = %q{A simple tool to return the dates given a day}
13
- spec.description = %q{This gem tells you the date of next Tuesday}
13
+ spec.description = %q{You may ask for the date of next Tuesday, this Monday, last Saturyda, or the first Saturyda of Nov 2011}
14
14
  spec.homepage = "https://github.com/ej2015/what_date.git"
15
15
  spec.license = "MIT"
16
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: what_date
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edgar
@@ -80,7 +80,8 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.11'
83
- description: This gem tells you the date of next Tuesday
83
+ description: You may ask for the date of next Tuesday, this Monday, last Saturyda,
84
+ or the first Saturyda of Nov 2011
84
85
  email:
85
86
  - zorro.ej@gmail.com
86
87
  executables: []
@@ -98,6 +99,7 @@ files:
98
99
  - bin/setup
99
100
  - lib/what_date.rb
100
101
  - lib/what_date/client.rb
102
+ - lib/what_date/date_of_month.rb
101
103
  - lib/what_date/version.rb
102
104
  - what_date.gemspec
103
105
  homepage: https://github.com/ej2015/what_date.git