denso-calendar 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +12 -0
- data/.github/workflows/main.yml +62 -0
- data/Gemfile.lock +2 -2
- data/README.md +16 -1
- data/denso-calendar.gemspec +1 -1
- data/lib/denso/calendar.rb +27 -7
- data/lib/denso/calendar/date.rb +32 -0
- data/lib/denso/calendar/version.rb +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e5d414803855db1443a7a9a43b61b5d3faeec684a841a5acdb310eda9084749
|
4
|
+
data.tar.gz: 05fcf9bc1298cbf869e988f6a18f262a291b2dd76e5b0fcb12e00af13ec6879b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eed69658f6a8b4b2d34218b890197aba4a63527c1fc83c573d0f39df7699845b40ee8edae8da7d20b3f79b63c6657806086a679c34a10ff2ada072b6d6bb0e84
|
7
|
+
data.tar.gz: 002fee53742edb6cbf7b1193c2cd10c5333fdd2be1a71556af5098d65a4a744987a89b9308ef5be8ce6ac8ce386ebfe056db94aa5c12b0650edb9c4181b97f40
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# These are supported funding model platforms
|
2
|
+
|
3
|
+
github: [satoryu] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
4
|
+
patreon: # Replace with a single Patreon username
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
6
|
+
ko_fi: # Replace with a single Ko-fi username
|
7
|
+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
11
|
+
otechie: # Replace with a single Otechie username
|
12
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
@@ -0,0 +1,62 @@
|
|
1
|
+
name: CI/CD
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request:
|
8
|
+
types: [opened, synchronize]
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
build:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
strategy:
|
14
|
+
matrix:
|
15
|
+
ruby-version:
|
16
|
+
- 2.6
|
17
|
+
- 2.7
|
18
|
+
name: Ruby ${{ matrix.ruby }}
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- uses: actions/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby-version }}
|
24
|
+
- uses: actions/cache@v1
|
25
|
+
with:
|
26
|
+
path: vendor/bundle
|
27
|
+
key: ${{ runner.os }}-${{ matrix.ruby-version }}-gems-${{ hashFiles('**/Gemfile.lock') }}
|
28
|
+
restore-keys: ${{ runner.os }}-${{ matrix.ruby-version }}-gems-
|
29
|
+
- run: |
|
30
|
+
gem install bundler
|
31
|
+
bundle config path vendor/bundle
|
32
|
+
bundle install
|
33
|
+
bundle exec rake
|
34
|
+
|
35
|
+
build_gh-page:
|
36
|
+
name: Build gh-page
|
37
|
+
needs: build
|
38
|
+
if: github.event_name == 'push'
|
39
|
+
runs-on: ubuntu-latest
|
40
|
+
steps:
|
41
|
+
- uses: actions/checkout@v2
|
42
|
+
- uses: actions/setup-ruby@v1
|
43
|
+
with:
|
44
|
+
ruby-version: 2.7
|
45
|
+
- uses: actions/cache@v1
|
46
|
+
with:
|
47
|
+
path: vendor/bundle
|
48
|
+
key: ${{ runner.os }}-2.7-gems-${{ hashFiles('**/Gemfile.lock') }}
|
49
|
+
restore-keys: ${{ runner.os }}-2.7-gems-
|
50
|
+
- run: |
|
51
|
+
gem install bundler
|
52
|
+
gem install yard
|
53
|
+
yardoc
|
54
|
+
bundle config path vendor/bundle
|
55
|
+
bundle install
|
56
|
+
bundle exec denso-calendar --type tokyo -f ical > doc/tokyo.ics
|
57
|
+
bundle exec denso-calendar --type production -f ical > doc/production.ics
|
58
|
+
bundle exec denso-calendar --type flex -f ical > doc/flex.ics
|
59
|
+
- uses: maxheld83/ghpages@v0.3.0
|
60
|
+
env:
|
61
|
+
BUILD_DIR: doc
|
62
|
+
GH_PAT: ${{ secrets.GH_PAT }}
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
denso-calendar (0.
|
4
|
+
denso-calendar (0.2.0)
|
5
5
|
icalendar (~> 2.6)
|
6
6
|
nokogiri (~> 1.10)
|
7
7
|
|
@@ -18,7 +18,7 @@ GEM
|
|
18
18
|
ice_cube (~> 0.16)
|
19
19
|
ice_cube (0.16.3)
|
20
20
|
mini_portile2 (2.4.0)
|
21
|
-
nokogiri (1.10.
|
21
|
+
nokogiri (1.10.10)
|
22
22
|
mini_portile2 (~> 2.4.0)
|
23
23
|
public_suffix (4.0.3)
|
24
24
|
rake (12.3.3)
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Denso::Calendar
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/denso-calendar.svg)](https://badge.fury.io/rb/denso-calendar)
|
4
|
+
![CI/CD](https://github.com/satoryu/denso-calendar/workflows/CI/CD/badge.svg)
|
5
|
+
|
3
6
|
This gem provides a CLI and API for developers to parse DENSO Calendar published in [the website](https://www.denso.com/jp/ja/about-us/calendar/).
|
4
7
|
|
5
8
|
## Installation
|
@@ -33,11 +36,21 @@ You can see all holidays for a specific employee type as follows:
|
|
33
36
|
desnso-calendar --type production
|
34
37
|
```
|
35
38
|
|
36
|
-
|
39
|
+
#### Options
|
37
40
|
|
38
41
|
- `-t TYPE`, `--type TYPE`: Optional. `production` in default. `production`, `tokyo` and `flex` are available.
|
39
42
|
- `-f FORMATTER`, `--formatter FORMATTER`: Optional. `plain` in default. `ical` and `plain` are available.
|
40
43
|
|
44
|
+
#### Generated ics files
|
45
|
+
|
46
|
+
You can get samples of ics files generated by the latest version of the cli:
|
47
|
+
|
48
|
+
- https://satoryu.github.io/denso-calendar/production.ics
|
49
|
+
- https://satoryu.github.io/denso-calendar/flex.ics
|
50
|
+
- https://satoryu.github.io/denso-calendar/tokyo.ics
|
51
|
+
|
52
|
+
You can import the above to your calendar/scheduling software like Outlook :calendar:
|
53
|
+
|
41
54
|
### API
|
42
55
|
|
43
56
|
You can deal with holidays in Denso Calendar in your code:
|
@@ -50,6 +63,8 @@ calendar = Denso::Calendar.load # :production in default.
|
|
50
63
|
holidays = calendar.holidays # returns an Array of Date
|
51
64
|
```
|
52
65
|
|
66
|
+
[Read more...](https://satoryu.github.io/denso-calendar/)
|
67
|
+
|
53
68
|
## Development
|
54
69
|
|
55
70
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/denso-calendar.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.description = 'A parser DENSO calendar'
|
11
11
|
spec.homepage = 'https://github.com/satoryu/denso-calendar'
|
12
12
|
spec.license = 'MIT'
|
13
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 2.
|
13
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 2.6.0')
|
14
14
|
|
15
15
|
spec.metadata['homepage_uri'] = spec.homepage
|
16
16
|
spec.metadata['source_code_uri'] = spec.homepage
|
data/lib/denso/calendar.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'denso/calendar/version'
|
4
|
+
require 'denso/calendar/date'
|
4
5
|
require 'uri'
|
5
|
-
require 'date'
|
6
6
|
require 'nokogiri'
|
7
7
|
require 'net/http'
|
8
8
|
|
@@ -29,7 +29,8 @@ module Denso
|
|
29
29
|
@uri ||= ::URI.parse(URI)
|
30
30
|
end
|
31
31
|
|
32
|
-
|
32
|
+
# @return [Array[Denso::Calendar::Date]]
|
33
|
+
attr_reader :days
|
33
34
|
|
34
35
|
def initialize(tables_doc)
|
35
36
|
@doc = tables_doc
|
@@ -37,10 +38,26 @@ module Denso
|
|
37
38
|
parse
|
38
39
|
end
|
39
40
|
|
41
|
+
# Returns all business days in the Calendar
|
42
|
+
#
|
43
|
+
# @return [Array[Denso::Calendar::Date]]
|
44
|
+
# @see Denso::Calendar::Date#business_day?
|
45
|
+
def business_days
|
46
|
+
@business_days ||= days.select(&:business_day?)
|
47
|
+
end
|
48
|
+
|
49
|
+
# Returns all holidays in the Calendar
|
50
|
+
#
|
51
|
+
# @return [Array[Denso::Calendar::Date]]
|
52
|
+
# @see Denso::Calendar::Date#holiday?
|
53
|
+
def holidays
|
54
|
+
@holidays ||= days.select(&:holiday?)
|
55
|
+
end
|
56
|
+
|
40
57
|
private
|
41
58
|
|
42
59
|
def parse
|
43
|
-
@
|
60
|
+
@days = []
|
44
61
|
|
45
62
|
@doc.xpath('.//table').each do |table|
|
46
63
|
caption = table.xpath('./caption/text()').to_s
|
@@ -48,12 +65,15 @@ module Denso
|
|
48
65
|
year = m[1].to_i
|
49
66
|
month = m[2].to_i
|
50
67
|
|
51
|
-
table.css('td
|
52
|
-
|
68
|
+
table.css('td').each do |element|
|
69
|
+
day = element.content
|
70
|
+
next if day !~ /\A\d+\Z/
|
71
|
+
|
72
|
+
holiday = element['class'] && element['class'].include?('holiday')
|
73
|
+
|
74
|
+
@days << Denso::Calendar::Date.new(year, month, day.to_i, holiday: holiday)
|
53
75
|
end
|
54
76
|
end
|
55
|
-
|
56
|
-
@holidays
|
57
77
|
end
|
58
78
|
end
|
59
79
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
module Denso
|
6
|
+
class Calendar
|
7
|
+
class Date < ::Date
|
8
|
+
def initialize(*args)
|
9
|
+
options = args.last.is_a?(Hash) ? args.pop : { holiday: true }
|
10
|
+
super(*args)
|
11
|
+
|
12
|
+
@holiday = options[:holiday]
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns true if the day is holiday
|
16
|
+
#
|
17
|
+
# @return [Boolean]
|
18
|
+
# @see #business_day?
|
19
|
+
def holiday?
|
20
|
+
@holiday
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns true if the day is business day, meaning not holiday
|
24
|
+
#
|
25
|
+
# @return [Boolean]
|
26
|
+
# @see #holiday?
|
27
|
+
def business_day?
|
28
|
+
!holiday?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: denso-calendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tatsuya Sato
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: icalendar
|
@@ -88,6 +88,8 @@ executables:
|
|
88
88
|
extensions: []
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
|
+
- ".github/FUNDING.yml"
|
92
|
+
- ".github/workflows/main.yml"
|
91
93
|
- ".gitignore"
|
92
94
|
- ".rspec"
|
93
95
|
- ".travis.yml"
|
@@ -104,6 +106,7 @@ files:
|
|
104
106
|
- lib/denso-calendar.rb
|
105
107
|
- lib/denso/calendar.rb
|
106
108
|
- lib/denso/calendar/cli.rb
|
109
|
+
- lib/denso/calendar/date.rb
|
107
110
|
- lib/denso/calendar/formatter.rb
|
108
111
|
- lib/denso/calendar/formatter/ical.rb
|
109
112
|
- lib/denso/calendar/formatter/plain.rb
|
@@ -114,7 +117,7 @@ licenses:
|
|
114
117
|
metadata:
|
115
118
|
homepage_uri: https://github.com/satoryu/denso-calendar
|
116
119
|
source_code_uri: https://github.com/satoryu/denso-calendar
|
117
|
-
post_install_message:
|
120
|
+
post_install_message:
|
118
121
|
rdoc_options: []
|
119
122
|
require_paths:
|
120
123
|
- lib
|
@@ -122,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
125
|
requirements:
|
123
126
|
- - ">="
|
124
127
|
- !ruby/object:Gem::Version
|
125
|
-
version: 2.
|
128
|
+
version: 2.6.0
|
126
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
130
|
requirements:
|
128
131
|
- - ">="
|
@@ -130,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
version: '0'
|
131
134
|
requirements: []
|
132
135
|
rubygems_version: 3.1.2
|
133
|
-
signing_key:
|
136
|
+
signing_key:
|
134
137
|
specification_version: 4
|
135
138
|
summary: A parser DENSO calendar
|
136
139
|
test_files: []
|