mcalendar 0.3.3 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +2 -2
- data/lib/mcalendar/calendar.rb +2 -2
- data/lib/mcalendar/command.rb +2 -4
- data/lib/mcalendar/config.rb +55 -49
- data/lib/mcalendar/holiday.rb +59 -27
- data/lib/mcalendar/options.rb +7 -7
- data/lib/mcalendar/output_pdf.rb +21 -13
- data/lib/mcalendar/version.rb +1 -1
- data/mcalendar.gemspec +3 -0
- metadata +34 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c37d4882b2dcea8a3df4b7e8802b319ccbfd1f650fe2fc90e6fb6fafa9919d3
|
4
|
+
data.tar.gz: f6005e4ea03becf4302e45490dcd4a0f00230d6db48d1bec4d6411f7d45c9560
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '093c36d9b6ccfc75fe69e9c7fe4a406202e24c8592738f0b572f26dfe51802beadee078cfd84e32d4a2ee197406d1b2a97acb9b08e47de98efd1a3efd1f1ccb7'
|
7
|
+
data.tar.gz: ca679323931aaa7cdf0803c2a386b15c23f20d2ecf0902769f4e7e2a770ea5fb8124c1eada288e0847e4dbaaf92045b3a248060cef24ed37828a9cdd7f188690
|
data/.gitignore
CHANGED
data/README.md
CHANGED
data/lib/mcalendar/calendar.rb
CHANGED
@@ -15,14 +15,14 @@ module Mcalendar
|
|
15
15
|
|
16
16
|
def set_pdf_name(name)
|
17
17
|
if name.nil? || name.empty?
|
18
|
-
@pdf_name = Mcalendar::
|
18
|
+
@pdf_name = Mcalendar::DEFAULT_PDF_NAME
|
19
19
|
else
|
20
20
|
@pdf_name = name
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
def to_s
|
25
|
-
week_header = Mcalendar::
|
25
|
+
week_header = Mcalendar::DAY_OF_WEEK.join(" ")
|
26
26
|
month_header = @month_title.center(week_header.size).rstrip
|
27
27
|
calendar = [[week_header]]
|
28
28
|
@days.each_slice(7) {|x| calendar << [x.join(" ")]}
|
data/lib/mcalendar/command.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
module Mcalendar
|
4
4
|
class Command
|
5
|
-
|
6
5
|
def self.run(argv)
|
7
6
|
new(argv).execute
|
8
7
|
end
|
@@ -12,12 +11,12 @@ module Mcalendar
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def execute
|
15
|
-
|
16
14
|
options = Mcalendar::Options.parse(@argv)
|
17
15
|
date = options[:date]
|
18
16
|
console = options[:opt][:console]
|
19
17
|
pdf = options[:opt][:pdf]
|
20
18
|
pdf_name = options[:opt][:name]
|
19
|
+
version = options[:opt][:version]
|
21
20
|
calendar = Mcalendar::Calendar.new(date.year, date.month, pdf_name)
|
22
21
|
|
23
22
|
# output calendar
|
@@ -25,11 +24,10 @@ module Mcalendar
|
|
25
24
|
calendar.pdf if pdf
|
26
25
|
|
27
26
|
# both outputs if no options
|
28
|
-
if console.nil? && pdf.nil?
|
27
|
+
if console.nil? && pdf.nil? && version.nil?
|
29
28
|
calendar.display
|
30
29
|
calendar.pdf
|
31
30
|
end
|
32
|
-
|
33
31
|
end
|
34
32
|
end
|
35
33
|
end
|
data/lib/mcalendar/config.rb
CHANGED
@@ -1,80 +1,86 @@
|
|
1
1
|
module Mcalendar
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
}
|
2
|
+
COLOR = {
|
3
|
+
white: "FFFFFF",
|
4
|
+
silver: "C0C0C0",
|
5
|
+
gray: "808080",
|
6
|
+
black: "000000",
|
7
|
+
red: "FF0000",
|
8
|
+
maroon: "800000",
|
9
|
+
yellow: "FFFF00",
|
10
|
+
olive: "808000",
|
11
|
+
lime: "00FF00",
|
12
|
+
green: "008000",
|
13
|
+
aqua: "00FFFF",
|
14
|
+
teal: "008080",
|
15
|
+
blue: "0000FF",
|
16
|
+
navy: "000080",
|
17
|
+
fuchsia: "FF00FF",
|
18
|
+
purple: "800080",
|
19
|
+
orange: "FFA500",
|
20
|
+
}.freeze
|
22
21
|
|
23
|
-
|
24
|
-
|
22
|
+
DAY_OF_WEEK = %w[Sun Mon Tue Wed Thu Fri Sat].freeze
|
23
|
+
DEFAULT_PDF_NAME = "calendar.pdf".freeze
|
25
24
|
|
26
|
-
|
25
|
+
Config_day = Struct.new(
|
26
|
+
"ConfigDay",
|
27
|
+
:day,
|
28
|
+
:day_color,
|
29
|
+
:holiday_text,
|
30
|
+
:anniversary_text
|
31
|
+
)
|
27
32
|
|
28
|
-
|
29
|
-
|
30
|
-
@
|
33
|
+
module Config
|
34
|
+
def days_information
|
35
|
+
# @first_of_month = obj_calendar.first_of_month
|
36
|
+
# @end_of_month = obj_calendar.end_of_month
|
31
37
|
|
32
38
|
@days_config = Hash.new(nil)
|
39
|
+
holiday_description_language
|
33
40
|
days_basic
|
34
41
|
holiday
|
35
42
|
anniversary
|
36
43
|
end
|
37
44
|
|
38
|
-
def
|
45
|
+
def days_basic
|
39
46
|
(@first_of_month..@end_of_month).each do |date|
|
40
47
|
d_sym = date.strftime("%Y%m%d").to_sym
|
41
|
-
@days_config[d_sym] = Config_day.new(date.day,
|
48
|
+
@days_config[d_sym] = Config_day.new(date.day, :black, nil, nil)
|
42
49
|
end
|
43
50
|
end
|
44
51
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
52
|
+
def holiday_description_language
|
53
|
+
Mcalendar.const_set(:HOLIDAY, Mcalendar::EN::HOLIDAY)
|
54
|
+
Mcalendar.const_set(:ANNIVERSARY, Mcalendar::EN::ANNIVERSARY)
|
55
|
+
end
|
56
|
+
|
57
|
+
def holiday
|
58
|
+
y = format("%4d", @first_of_month.year)
|
59
|
+
m = format("%02d", @first_of_month.month)
|
48
60
|
regex = /#{y}#{m}\d\d/
|
49
|
-
|
61
|
+
|
50
62
|
Mcalendar::HOLIDAY.keys.grep(regex).each do |d|
|
51
63
|
@days_config[d].day = Date.parse(d.to_s).day
|
52
|
-
@days_config[d].
|
53
|
-
@days_config[d].
|
64
|
+
@days_config[d].day_color = :red
|
65
|
+
@days_config[d].holiday_text = Mcalendar::HOLIDAY[d]
|
54
66
|
end
|
55
67
|
end
|
56
68
|
|
57
|
-
def
|
58
|
-
y = "%4d"
|
59
|
-
m = "%02d"
|
69
|
+
def anniversary
|
70
|
+
y = format("%4d", @first_of_month.year)
|
71
|
+
m = format("%02d", @first_of_month.month)
|
60
72
|
regex = /#{y}#{m}\d\d/
|
61
|
-
|
73
|
+
|
62
74
|
Mcalendar::ANNIVERSARY.keys.grep(regex).each do |d|
|
63
75
|
@days_config[d].day = Date.parse(d.to_s).day
|
64
|
-
|
65
|
-
@days_config[d].text += (", " + Mcalendar::ANNIVERSARY[d])
|
66
|
-
else
|
67
|
-
@days_config[d].text += Mcalendar::ANNIVERSARY[d]
|
68
|
-
end
|
69
|
-
@days_config[d].color = :black if @days_config[d].color != :red
|
76
|
+
@days_config[d].anniversary_text = Mcalendar::ANNIVERSARY[d]
|
70
77
|
end
|
71
78
|
end
|
72
79
|
|
73
|
-
def
|
74
|
-
pdf_days = @days_config.each_value.map {|val| val}
|
75
|
-
@first_of_month.wday.times {pdf_days.unshift(" ")}
|
80
|
+
def days
|
81
|
+
pdf_days = @days_config.each_value.map { |val| val }
|
82
|
+
@first_of_month.wday.times { pdf_days.unshift(" ") }
|
76
83
|
pdf_days
|
77
84
|
end
|
78
|
-
|
79
85
|
end
|
80
|
-
end
|
86
|
+
end
|
data/lib/mcalendar/holiday.rb
CHANGED
@@ -1,31 +1,63 @@
|
|
1
1
|
module Mcalendar
|
2
|
+
module JA
|
3
|
+
# Japanese holidays in Japanese
|
4
|
+
HOLIDAY = {
|
5
|
+
"20200101": "元日",
|
6
|
+
"20200113": "成人の日",
|
7
|
+
"20200211": "建国記念の日",
|
8
|
+
"20200223": "天皇誕生日",
|
9
|
+
"20200224": "振替休日",
|
10
|
+
"20200320": "春分の日",
|
11
|
+
"20200429": "昭和の日",
|
12
|
+
"20200503": "憲法記念日",
|
13
|
+
"20200504": "みどりの日",
|
14
|
+
"20200505": "子供の日",
|
15
|
+
"20200506": "振替休日",
|
16
|
+
"20200723": "海の日",
|
17
|
+
"20200724": "スポーツの日",
|
18
|
+
"20200810": "山の日",
|
19
|
+
"20200921": "敬老の日",
|
20
|
+
"20200922": "秋分の日",
|
21
|
+
"20201103": "文化の日",
|
22
|
+
"20201123": "勤労感謝の日",
|
23
|
+
}.freeze
|
2
24
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
"20200320": "Vernal Equinox Day",
|
11
|
-
"20200429": "Showa Day",
|
12
|
-
"20200503": "Constitution Memorial Day",
|
13
|
-
"20200504": "Greenery Day",
|
14
|
-
"20200505": "Children's Day",
|
15
|
-
"20200506": "Substitute Holiday",
|
16
|
-
"20200723": "Marine Day",
|
17
|
-
"20200724": "Sports Day",
|
18
|
-
"20200810": "Mountain Day",
|
19
|
-
"20200921": "Respect for the Aged Day",
|
20
|
-
"20200922": "Autumnal Equinox Day",
|
21
|
-
"20201103": "Culture Day",
|
22
|
-
"20201123": "Labour Thanksgiving Day"
|
23
|
-
}
|
25
|
+
ANNIVERSARY = {
|
26
|
+
"20200224": "Rubyの誕生日",
|
27
|
+
"20200903": "RubyKaigi 2020 Nagano",
|
28
|
+
"20200904": "RubyKaigi 2020 Nagano",
|
29
|
+
"20200905": "RubyKaigi 2020 Nagano",
|
30
|
+
}.freeze
|
31
|
+
end
|
24
32
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
module EN
|
34
|
+
# Japanese holidays in English
|
35
|
+
HOLIDAY = {
|
36
|
+
"20200101": "New Year's Day",
|
37
|
+
"20200113": "Coming-of-age Day",
|
38
|
+
"20200211": "National Foundation Day",
|
39
|
+
"20200223": "Emperor's Birthday",
|
40
|
+
"20200224": "Substitute Holiday",
|
41
|
+
"20200320": "Vernal Equinox Day",
|
42
|
+
"20200429": "Showa Day",
|
43
|
+
"20200503": "Constitution Memorial Day",
|
44
|
+
"20200504": "Greenery Day",
|
45
|
+
"20200505": "Children's Day",
|
46
|
+
"20200506": "Substitute Holiday",
|
47
|
+
"20200723": "Marine Day",
|
48
|
+
"20200724": "Sports Day",
|
49
|
+
"20200810": "Mountain Day",
|
50
|
+
"20200921": "Respect for the Aged Day",
|
51
|
+
"20200922": "Autumnal Equinox Day",
|
52
|
+
"20201103": "Culture Day",
|
53
|
+
"20201123": "Labour Thanksgiving Day",
|
54
|
+
}.freeze
|
55
|
+
|
56
|
+
ANNIVERSARY = {
|
57
|
+
"20200224": "Ruby's Birthday",
|
58
|
+
"20200903": "RubyKaigi 2020 Nagano",
|
59
|
+
"20200904": "RubyKaigi 2020 Nagano",
|
60
|
+
"20200905": "RubyKaigi 2020 Nagano",
|
61
|
+
}.freeze
|
62
|
+
end
|
31
63
|
end
|
data/lib/mcalendar/options.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
module Mcalendar
|
2
2
|
module Options
|
3
|
-
|
4
3
|
def self.parse(argv)
|
5
4
|
options = {}
|
6
5
|
|
7
6
|
parser = OptionParser.new do |o|
|
8
|
-
o.on_head(
|
7
|
+
o.on_head("-v", "--version", "Show version") do |v|
|
8
|
+
options[:version] = v
|
9
9
|
o.version = Mcalendar::VERSION
|
10
10
|
puts o.version
|
11
11
|
end
|
12
|
-
o.on(
|
13
|
-
o.on(
|
14
|
-
o.on(
|
12
|
+
o.on("-p", "--pdf", "output pdf") { |v| options[:pdf] = v }
|
13
|
+
o.on("-n NAME", "--name=NAME", String, "output pdf name") { |v| options[:name] = v }
|
14
|
+
o.on("-c", "--console", "output console") { |v| options[:console] = v }
|
15
15
|
end
|
16
16
|
|
17
17
|
begin
|
@@ -24,14 +24,14 @@ module Mcalendar
|
|
24
24
|
options[:name] = Mcalendar::DEFAULT_PDF_NAME
|
25
25
|
end
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
begin
|
29
29
|
d = Date.parse(remained.first)
|
30
30
|
rescue
|
31
31
|
d = Date.today
|
32
32
|
end
|
33
33
|
|
34
|
-
{date: d, opt: options}
|
34
|
+
{ date: d, opt: options }
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/lib/mcalendar/output_pdf.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
module Mcalendar
|
2
2
|
class OutputPdf < Prawn::Document
|
3
|
+
include Mcalendar::Config
|
3
4
|
|
4
5
|
def initialize(obj_calendar)
|
6
|
+
@first_of_month = obj_calendar.first_of_month
|
7
|
+
@end_of_month = obj_calendar.end_of_month
|
5
8
|
@month_header = [[obj_calendar.month_title]]
|
6
|
-
@day_of_week = [Mcalendar::
|
9
|
+
@day_of_week = [Mcalendar::DAY_OF_WEEK]
|
7
10
|
|
8
11
|
@pdf_days = []
|
9
|
-
|
10
|
-
@pdf_days =
|
12
|
+
days_information
|
13
|
+
@pdf_days = days
|
11
14
|
@calendar = @pdf_days.each_slice(7).map
|
12
15
|
@day_height = @calendar.size > 5 ? 20 : 20
|
13
16
|
@text_height = @calendar.size > 5 ? 30 : 40
|
@@ -29,15 +32,24 @@ module Mcalendar
|
|
29
32
|
cells.style(width: 79, height: 40, align: :center, size: 19)
|
30
33
|
row(0).padding_top = 10
|
31
34
|
row(0).padding_bottom = 0
|
32
|
-
cells[0, 0].text_color = Mcalendar::
|
35
|
+
cells[0, 0].text_color = Mcalendar::COLOR[:red]
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
36
39
|
def day_content
|
37
40
|
@calendar.each do |c|
|
38
41
|
row_day = c.map {|x| (x.class == Struct::ConfigDay) ? x.day : x}
|
39
|
-
row_color = c.map {|x| (x.class == Struct::ConfigDay) ? x.
|
40
|
-
row_text = c.map
|
42
|
+
row_color = c.map {|x| (x.class == Struct::ConfigDay) ? x.day_color : :black}
|
43
|
+
row_text = c.map do |x|
|
44
|
+
str = ""
|
45
|
+
if x.class == Struct::ConfigDay
|
46
|
+
holiday_str = %Q[<color rgb="#{Mcalendar::COLOR[:red]}">#{x.holiday_text}</color>\n]
|
47
|
+
anniversary_str = %Q[<color rgb="#{Mcalendar::COLOR[:green]}">#{x.anniversary_text}</color>]
|
48
|
+
str += holiday_str if x.holiday_text
|
49
|
+
str += anniversary_str if x.anniversary_text
|
50
|
+
end
|
51
|
+
str
|
52
|
+
end
|
41
53
|
|
42
54
|
table([row_day], cell_style: {height: @day_height}) do
|
43
55
|
cells.style(width: 79, align: :center, size: 19)
|
@@ -45,23 +57,19 @@ module Mcalendar
|
|
45
57
|
row(0).padding_top = 2
|
46
58
|
row(0).padding_bottom = 0
|
47
59
|
row_color.each_with_index do |color, index|
|
48
|
-
rows(0).columns(index).text_color = Mcalendar::
|
60
|
+
rows(0).columns(index).text_color = Mcalendar::COLOR[color]
|
49
61
|
end
|
50
|
-
column(0).map {|col| col.text_color = Mcalendar::
|
62
|
+
column(0).map {|col| col.text_color = Mcalendar::COLOR[:red]}
|
51
63
|
end
|
52
64
|
|
53
65
|
table([row_text], cell_style: {height: @text_height}) do
|
54
|
-
cells.style(width: 79, align: :center, size: 8, overflow: :shrink_to_fit)
|
66
|
+
cells.style(width: 79, align: :center, size: 8, overflow: :shrink_to_fit, inline_format: true)
|
55
67
|
row(0).borders = [:bottom, :left, :right]
|
56
68
|
row(0).padding_top = 0
|
57
69
|
row(0).padding_bottom = 0
|
58
70
|
row(0).padding_left = 0
|
59
71
|
row(0).padding_right = 0
|
60
|
-
row_color.each_with_index do |color, index|
|
61
|
-
rows(0).columns(index).text_color = Mcalendar::Config::COLOR[color]
|
62
|
-
end
|
63
72
|
end
|
64
|
-
|
65
73
|
end
|
66
74
|
end
|
67
75
|
|
data/lib/mcalendar/version.rb
CHANGED
data/mcalendar.gemspec
CHANGED
@@ -21,6 +21,9 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
+
spec.add_runtime_dependency "prawn"
|
25
|
+
spec.add_runtime_dependency "prawn-table"
|
26
|
+
|
24
27
|
spec.add_development_dependency "test-unit"
|
25
28
|
spec.add_development_dependency "test-unit-rr"
|
26
29
|
spec.add_development_dependency "prawn"
|
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mcalendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- icm7216
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: prawn
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: prawn-table
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: test-unit
|
15
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,7 +124,7 @@ homepage: https://github.com/icm7216/mcalendar
|
|
96
124
|
licenses:
|
97
125
|
- MIT
|
98
126
|
metadata: {}
|
99
|
-
post_install_message:
|
127
|
+
post_install_message:
|
100
128
|
rdoc_options: []
|
101
129
|
require_paths:
|
102
130
|
- lib
|
@@ -111,8 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
111
139
|
- !ruby/object:Gem::Version
|
112
140
|
version: '0'
|
113
141
|
requirements: []
|
114
|
-
rubygems_version: 3.
|
115
|
-
signing_key:
|
142
|
+
rubygems_version: 3.2.17
|
143
|
+
signing_key:
|
116
144
|
specification_version: 4
|
117
145
|
summary: Ruby Monthly calendar
|
118
146
|
test_files: []
|