holiday_co 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/data/years.yml +4 -0
- data/lib/holiday_co/models/day.rb +22 -0
- data/lib/holiday_co/models/year.rb +48 -0
- data/lib/holiday_co/utils.rb +18 -0
- data/lib/holiday_co/version.rb +3 -0
- data/lib/holiday_co.rb +26 -0
- metadata +49 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 54948857733519963c3d42cdf2bf4e81d71ac72388f144650717d57adfeffc4f
|
4
|
+
data.tar.gz: 7231619889a4d1f88d014be6eae490aaa417fef4bd092c79b10c21993c595ef1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 84f6c942bc60bb0752b7ddfb8b5d8b421b1254b3cb4efbb34921798a4435bd21e65d624fae4498227500cf7977d1c10cda53b6b0a51b5b050c439da6cbe461cb
|
7
|
+
data.tar.gz: d311a1ea85b85ad43b099c56b771a0926cfeadf5f59c2f1e957461d0fef6098b4051ed8bf3be9d0b362c1816b99f8aab9dd85fbf59e388356b92b5d3a7d07390
|
data/data/years.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require "date"
|
2
|
+
require_relative "year"
|
3
|
+
|
4
|
+
module HolidayCo
|
5
|
+
class Day
|
6
|
+
attr_reader :date
|
7
|
+
|
8
|
+
def initialize(date)
|
9
|
+
@date = date.to_s
|
10
|
+
end
|
11
|
+
|
12
|
+
def holiday?
|
13
|
+
holiday_dates.include?(date)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def holiday_dates
|
19
|
+
Year.new(Date.parse(date).year).holiday_dates
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "yaml"
|
4
|
+
|
5
|
+
module HolidayCo
|
6
|
+
class YearDataNotAvailableError < StandardError
|
7
|
+
def message
|
8
|
+
"There is no data file available for the specified year (yet)."
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class Year
|
13
|
+
attr_reader :year
|
14
|
+
|
15
|
+
def initialize(year)
|
16
|
+
@year = year.to_s
|
17
|
+
end
|
18
|
+
|
19
|
+
def holidays
|
20
|
+
raise YearDataNotAvailableError unless year_data_available?
|
21
|
+
|
22
|
+
YAML
|
23
|
+
.load_file(File.expand_path("../../../../data/years/#{year}.yml", __FILE__))
|
24
|
+
.fetch("holidays", [])
|
25
|
+
.map { |h| h.transform_keys(&:to_sym) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def holiday_names
|
29
|
+
holidays.map { |h| h[:name] }
|
30
|
+
end
|
31
|
+
|
32
|
+
def holiday_dates
|
33
|
+
holidays.map { |h| h[:date] }
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def year_data_available?
|
39
|
+
available_years.include?(year)
|
40
|
+
end
|
41
|
+
|
42
|
+
def available_years
|
43
|
+
YAML
|
44
|
+
.load_file(File.expand_path("../../../../data/years.yml", __FILE__))
|
45
|
+
.map(&:to_s)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "date"
|
2
|
+
|
3
|
+
module HolidayCo
|
4
|
+
# Colombian time zone is 5 hours behind UTC.
|
5
|
+
UTC_OFFSET = "-05:00".freeze
|
6
|
+
|
7
|
+
def self.current_time
|
8
|
+
Time.now.getlocal(UTC_OFFSET)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.current_year
|
12
|
+
current_time.year
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.current_date
|
16
|
+
current_time.to_date
|
17
|
+
end
|
18
|
+
end
|
data/lib/holiday_co.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "holiday_co/utils"
|
4
|
+
require_relative "holiday_co/version"
|
5
|
+
require_relative "holiday_co/models/day"
|
6
|
+
require_relative "holiday_co/models/year"
|
7
|
+
|
8
|
+
module HolidayCo
|
9
|
+
class << self
|
10
|
+
def is_holiday?(date = current_date)
|
11
|
+
Day.new(date).holiday?
|
12
|
+
end
|
13
|
+
|
14
|
+
def holidays(year = current_year)
|
15
|
+
Year.new(year).holidays
|
16
|
+
end
|
17
|
+
|
18
|
+
def holidays_names(year = current_year)
|
19
|
+
Year.new(year).holiday_names
|
20
|
+
end
|
21
|
+
|
22
|
+
def holidays_dates(year = current_year)
|
23
|
+
Year.new(year).holiday_dates
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: holiday_co
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gabriel Coronado
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-09-08 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple gem to handle holidays in Colombia
|
14
|
+
email:
|
15
|
+
- gabrielomar2809@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- data/years.yml
|
21
|
+
- lib/holiday_co.rb
|
22
|
+
- lib/holiday_co/models/day.rb
|
23
|
+
- lib/holiday_co/models/year.rb
|
24
|
+
- lib/holiday_co/utils.rb
|
25
|
+
- lib/holiday_co/version.rb
|
26
|
+
homepage: https://github.com/gabo-cs/holiday_co
|
27
|
+
licenses:
|
28
|
+
- MIT
|
29
|
+
metadata: {}
|
30
|
+
post_install_message:
|
31
|
+
rdoc_options: []
|
32
|
+
require_paths:
|
33
|
+
- lib
|
34
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
+
requirements:
|
36
|
+
- - ">="
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubygems_version: 3.2.33
|
46
|
+
signing_key:
|
47
|
+
specification_version: 4
|
48
|
+
summary: Colombian Holidays
|
49
|
+
test_files: []
|