From 6af292bfb8ebb1e66ef3dcc9cdffae6f13857980 Mon Sep 17 00:00:00 2001 From: shoma Date: Tue, 29 Jul 2025 11:00:25 +0900 Subject: [PATCH 01/12] first commit --- 02.calendar/calendar.rb | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 02.calendar/calendar.rb diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb new file mode 100755 index 0000000000..b9b62c3c75 --- /dev/null +++ b/02.calendar/calendar.rb @@ -0,0 +1,54 @@ +#! /usr/bin/env ruby +require 'date' +require 'optparse' + +# 入力データのチェック +def check_inputs(inputs) + year = inputs['y'] + month = inputs['m'] + if !year.nil? && !(year.to_i >= 1873) + raise '-yの引数には1873以上の数値を入力してください' + end + if !month.nil? && !month.to_i.between?(1,12) + raise '-mの引数には1から12の数値を入力してください' + end +end +inputs = ARGV.getopts("y:", 'm:') +check_inputs(inputs) + +year = if inputs['y'].nil? then Date.today.year else inputs['y'].to_i end +month = if inputs['m'].nil? then Date.today.month else inputs['m'].to_i end +# ネストされた配列の値を呼び出す際にエラーが起こらないように空配列をセットしてある +calendar = [['Su','Mo','Tu','We','Th','Fr','Sa'],[]] + +# カレンダーのデータを作成 +def make_calendar_data(year, month, calendar) + week_number = 1 + first_day = Date.new(year, month, 1).day + last_day = Date.new(year,month,-1).day + (first_day..last_day).to_a.each do |day| + date = Date.new(year, month, day) + calendar[week_number][date.wday] = day + if date.wday == 6 + calendar.push([]) + week_number += 1 + end + end + return calendar +end + +# カレンダーデータをもとにカレンダーを表示 +def make_calendar(year, month, calendar) + months = {1 => "January",2 => "February",3 => "March",4 => "April",5 => "May",6 => "June",7 => "July",8 => "August",9 => "September",10 => "October",11 => "November",12 => "December"} + printf("%8s", year) + printf("%8s\n", months[month]) + calendar.each do |x| + x.each do |y| + printf("%3s", y.to_s) + end + puts '' + end +end + +calendar = make_calendar_data(year, month, calendar) +make_calendar(year, month, calendar) From 1d4db41fa16f577a761ec2f710a7d46dc9be51b2 Mon Sep 17 00:00:00 2001 From: shoma Date: Tue, 29 Jul 2025 11:40:49 +0900 Subject: [PATCH 02/12] =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92?= =?UTF-8?q?=E8=AA=AD=E3=81=BF=E3=82=84=E3=81=99=E3=81=84=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 44 +++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index b9b62c3c75..2968fc02ea 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -1,4 +1,4 @@ -#! /usr/bin/env ruby +#! /usr/bin/env ruby require 'date' require 'optparse' @@ -6,31 +6,38 @@ def check_inputs(inputs) year = inputs['y'] month = inputs['m'] - if !year.nil? && !(year.to_i >= 1873) - raise '-yの引数には1873以上の数値を入力してください' - end - if !month.nil? && !month.to_i.between?(1,12) - raise '-mの引数には1から12の数値を入力してください' - end + raise '-yの引数には1873以上の数値を入力してください' if !year.nil? && year.to_i < 1873 + raise '-mの引数には1から12の数値を入力してください' if !month.nil? && !month.to_i.between?(1, 12) end -inputs = ARGV.getopts("y:", 'm:') +inputs = ARGV.getopts('y:', 'm:') check_inputs(inputs) - -year = if inputs['y'].nil? then Date.today.year else inputs['y'].to_i end -month = if inputs['m'].nil? then Date.today.month else inputs['m'].to_i end +year = inputs['y'].nil? ? Date.today.year : inputs['y'].to_i +month = inputs['m'].nil? ? Date.today.month : inputs['m'].to_i # ネストされた配列の値を呼び出す際にエラーが起こらないように空配列をセットしてある -calendar = [['Su','Mo','Tu','We','Th','Fr','Sa'],[]] +calendar = [%w[Su Mo Tu We Th Fr Sa], []] +months = { 1 => 'January', + 2 => 'February', + 3 => 'March', + 4 => 'April', + 5 => 'May', + 6 => 'June', + 7 => 'July', + 8 => 'August', + 9 => 'September', + 10 => 'October', + 11 => 'November', + 12 => 'December' } # カレンダーのデータを作成 def make_calendar_data(year, month, calendar) week_number = 1 first_day = Date.new(year, month, 1).day - last_day = Date.new(year,month,-1).day + last_day = Date.new(year, month, -1).day (first_day..last_day).to_a.each do |day| date = Date.new(year, month, day) calendar[week_number][date.wday] = day if date.wday == 6 - calendar.push([]) + calendar.push([]) week_number += 1 end end @@ -38,17 +45,16 @@ def make_calendar_data(year, month, calendar) end # カレンダーデータをもとにカレンダーを表示 -def make_calendar(year, month, calendar) - months = {1 => "January",2 => "February",3 => "March",4 => "April",5 => "May",6 => "June",7 => "July",8 => "August",9 => "September",10 => "October",11 => "November",12 => "December"} - printf("%8s", year) +def make_calendar(year, months, month, calendar) + printf('%8s', year) printf("%8s\n", months[month]) calendar.each do |x| x.each do |y| - printf("%3s", y.to_s) + printf('%3s', y.to_s) end puts '' end end calendar = make_calendar_data(year, month, calendar) -make_calendar(year, month, calendar) +make_calendar(year, months, month, calendar) From 0093e757cc543110afb3b9957d4353ed32634b20 Mon Sep 17 00:00:00 2001 From: shoma Date: Tue, 29 Jul 2025 12:06:52 +0900 Subject: [PATCH 03/12] =?UTF-8?q?=E3=82=AB=E3=83=AC=E3=83=B3=E3=83=80?= =?UTF-8?q?=E3=83=BC=E3=81=AE=E5=B9=B4=E6=9C=88=E3=81=AE=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=8Ccal=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=81=A8?= =?UTF-8?q?=E9=81=95=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 2968fc02ea..77ab68bdac 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -46,8 +46,8 @@ def make_calendar_data(year, month, calendar) # カレンダーデータをもとにカレンダーを表示 def make_calendar(year, months, month, calendar) - printf('%8s', year) - printf("%8s\n", months[month]) + printf('%8s', months[month]) + printf("%8s\n", year) calendar.each do |x| x.each do |y| printf('%3s', y.to_s) From 32ed99d390cbc2b0181e367a1c6c1bcf5db6d691 Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:01:17 +0900 Subject: [PATCH 04/12] =?UTF-8?q?=E3=83=97=E3=83=AD=E3=82=BB=E3=82=B9?= =?UTF-8?q?=E3=82=92=E7=B5=82=E4=BA=86=E3=81=99=E3=82=8B=E3=81=A8=E3=81=84?= =?UTF-8?q?=E3=81=86=E6=84=8F=E5=9B=B3=E3=82=92=E6=98=8E=E7=A2=BA=E3=81=AB?= =?UTF-8?q?=E7=A4=BA=E3=81=99=E3=81=9F=E3=82=81=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 77ab68bdac..d30c272bc4 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -6,9 +6,16 @@ def check_inputs(inputs) year = inputs['y'] month = inputs['m'] - raise '-yの引数には1873以上の数値を入力してください' if !year.nil? && year.to_i < 1873 - raise '-mの引数には1から12の数値を入力してください' if !month.nil? && !month.to_i.between?(1, 12) + if !year.nil? && year.to_i < 1873 + puts '-yの引数には1873以上の数値を入力してください' + exit(1) + end + if !month.nil? && !month.to_i.between?(1,12) + puts '-mの引数には1から12の数値を入力してください' + exit(1) + end end + inputs = ARGV.getopts('y:', 'm:') check_inputs(inputs) year = inputs['y'].nil? ? Date.today.year : inputs['y'].to_i From b62599bd97c66fa8a401efbf4e48a2c5092ddc21 Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:06:09 +0900 Subject: [PATCH 05/12] =?UTF-8?q?Date=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7?= =?UTF-8?q?=E3=82=AF=E3=83=88=E3=81=AE=E5=86=8D=E5=88=A9=E7=94=A8=E6=80=A7?= =?UTF-8?q?=E3=82=92=E4=B8=8A=E3=81=92=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AB?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index d30c272bc4..b675d9d98f 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -38,9 +38,9 @@ def check_inputs(inputs) # カレンダーのデータを作成 def make_calendar_data(year, month, calendar) week_number = 1 - first_day = Date.new(year, month, 1).day - last_day = Date.new(year, month, -1).day - (first_day..last_day).to_a.each do |day| + first_day = Date.new(year, month, 1) + last_day = Date.new(year, month, -1) + (first_day.day..last_day.day).to_a.each do |day| date = Date.new(year, month, day) calendar[week_number][date.wday] = day if date.wday == 6 From ee3f428364d99aa431ee38f772df6eedb05e0c08 Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:06:59 +0900 Subject: [PATCH 06/12] =?UTF-8?q?=E5=86=97=E9=95=B7=E3=81=A0=E3=81=A3?= =?UTF-8?q?=E3=81=9F=E3=81=9F=E3=82=81=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index b675d9d98f..ca6bc824ed 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -40,7 +40,7 @@ def make_calendar_data(year, month, calendar) week_number = 1 first_day = Date.new(year, month, 1) last_day = Date.new(year, month, -1) - (first_day.day..last_day.day).to_a.each do |day| + (first_day.day..last_day.day).each do |day| date = Date.new(year, month, day) calendar[week_number][date.wday] = day if date.wday == 6 From 9c92cfacdbf508d5d35140f5b2d7e7852966277e Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:23:37 +0900 Subject: [PATCH 07/12] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E3=81=8C=E4=BD=95=E3=82=92=E3=81=97=E3=81=A6=E3=81=84=E3=82=8B?= =?UTF-8?q?=E3=81=8B=E3=82=92=E5=88=86=E3=81=8B=E3=82=8A=E3=82=84=E3=81=99?= =?UTF-8?q?=E3=81=8F=E3=81=99=E3=82=8B=E3=81=9F=E3=82=81=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index ca6bc824ed..7989e38731 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -36,7 +36,7 @@ def check_inputs(inputs) 12 => 'December' } # カレンダーのデータを作成 -def make_calendar_data(year, month, calendar) +def generate_calendar_data(year, month, calendar) week_number = 1 first_day = Date.new(year, month, 1) last_day = Date.new(year, month, -1) @@ -52,7 +52,7 @@ def make_calendar_data(year, month, calendar) end # カレンダーデータをもとにカレンダーを表示 -def make_calendar(year, months, month, calendar) +def print_calendar(year, months, month, calendar) printf('%8s', months[month]) printf("%8s\n", year) calendar.each do |x| @@ -63,5 +63,5 @@ def make_calendar(year, months, month, calendar) end end -calendar = make_calendar_data(year, month, calendar) -make_calendar(year, months, month, calendar) +calendar = generate_calendar_data(year, month, calendar) +print_calendar(year, months, month, calendar) From a2e05e6ff031d011376d414a9d1f04cbcdae33bd Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:32:19 +0900 Subject: [PATCH 08/12] =?UTF-8?q?=E5=A4=89=E6=95=B0=E3=81=AE=E4=B8=AD?= =?UTF-8?q?=E8=BA=AB=E3=81=8C=E5=88=86=E3=81=8B=E3=82=8A=E3=82=84=E3=81=99?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 7989e38731..c9d0035f01 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -55,9 +55,9 @@ def generate_calendar_data(year, month, calendar) def print_calendar(year, months, month, calendar) printf('%8s', months[month]) printf("%8s\n", year) - calendar.each do |x| - x.each do |y| - printf('%3s', y.to_s) + calendar.each do |row| + row.each do |cell| + printf('%3s', cell.to_s) end puts '' end From e8fd32e4e3bc41b1580522652740baad3eab8419 Mon Sep 17 00:00:00 2001 From: shoma Date: Mon, 4 Aug 2025 11:39:45 +0900 Subject: [PATCH 09/12] =?UTF-8?q?=E6=84=8F=E5=9B=B3=E3=81=97=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=86=8D=E4=BB=A3=E5=85=A5=E3=81=8C=E8=B5=B7=E3=81=93?= =?UTF-8?q?=E3=82=89=E3=81=AA=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index c9d0035f01..0490261347 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -18,11 +18,11 @@ def check_inputs(inputs) inputs = ARGV.getopts('y:', 'm:') check_inputs(inputs) -year = inputs['y'].nil? ? Date.today.year : inputs['y'].to_i -month = inputs['m'].nil? ? Date.today.month : inputs['m'].to_i +YEAR = inputs['y'].nil? ? Date.today.year : inputs['y'].to_i +MONTH = inputs['m'].nil? ? Date.today.month : inputs['m'].to_i # ネストされた配列の値を呼び出す際にエラーが起こらないように空配列をセットしてある calendar = [%w[Su Mo Tu We Th Fr Sa], []] -months = { 1 => 'January', +MONTHS = { 1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', @@ -63,5 +63,5 @@ def print_calendar(year, months, month, calendar) end end -calendar = generate_calendar_data(year, month, calendar) -print_calendar(year, months, month, calendar) +calendar = generate_calendar_data(YEAR, MONTH, calendar) +print_calendar(YEAR, MONTHS, MONTH, calendar) From 85880eac7224c9e5004afd11889e0ad42b3d3e4d Mon Sep 17 00:00:00 2001 From: shoma Date: Tue, 5 Aug 2025 14:58:00 +0900 Subject: [PATCH 10/12] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E3=82=92=E5=8D=98=E4=B8=80=E8=B2=AC=E4=BB=BB=E3=81=AB=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=81=9F=E3=82=81=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 0490261347..64af23b59c 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -1,6 +1,7 @@ #! /usr/bin/env ruby require 'date' require 'optparse' +require 'debug' # 入力データのチェック def check_inputs(inputs) @@ -20,8 +21,7 @@ def check_inputs(inputs) check_inputs(inputs) YEAR = inputs['y'].nil? ? Date.today.year : inputs['y'].to_i MONTH = inputs['m'].nil? ? Date.today.month : inputs['m'].to_i -# ネストされた配列の値を呼び出す際にエラーが起こらないように空配列をセットしてある -calendar = [%w[Su Mo Tu We Th Fr Sa], []] +WEEKS = %w[Su Mo Tu We Th Fr Sa] MONTHS = { 1 => 'January', 2 => 'February', 3 => 'March', @@ -34,28 +34,32 @@ def check_inputs(inputs) 10 => 'October', 11 => 'November', 12 => 'December' } +# 出力する際に週と日付が同じ配列にあったほうが出力が楽であるため週と日を一緒にしてある +calendar = {:year => YEAR, :month => MONTHS[MONTH], :weeks_and_days => []} -# カレンダーのデータを作成 -def generate_calendar_data(year, month, calendar) +def get_days(year, month) week_number = 1 + # 呼び出す際にエラーにならないように空配列を入れてある + days = [[]] first_day = Date.new(year, month, 1) last_day = Date.new(year, month, -1) (first_day.day..last_day.day).each do |day| date = Date.new(year, month, day) - calendar[week_number][date.wday] = day + # 第1週はdaysのインデックス0に格納、のように週番号とインデックスがずれるため-1という処理を行っている + days[week_number - 1][date.wday] = day if date.wday == 6 - calendar.push([]) + days.push([]) week_number += 1 end end - return calendar + return days end # カレンダーデータをもとにカレンダーを表示 -def print_calendar(year, months, month, calendar) - printf('%8s', months[month]) - printf("%8s\n", year) - calendar.each do |row| +def print_calendar(calendar) + printf('%8s', calendar[:month]) + printf("%8s\n", calendar[:year]) + calendar[:weeks_and_days].each do |row| row.each do |cell| printf('%3s', cell.to_s) end @@ -63,5 +67,6 @@ def print_calendar(year, months, month, calendar) end end -calendar = generate_calendar_data(YEAR, MONTH, calendar) -print_calendar(YEAR, MONTHS, MONTH, calendar) +calendar[:weeks_and_days] = get_days(YEAR, MONTH) +calendar[:weeks_and_days].unshift(WEEKS) +print_calendar(calendar) From ccb4af4a17e976cb0aa6b7ab19b21fc178d37111 Mon Sep 17 00:00:00 2001 From: shoma Date: Tue, 5 Aug 2025 14:59:36 +0900 Subject: [PATCH 11/12] =?UTF-8?q?=E3=83=87=E3=83=90=E3=83=83=E3=82=B0?= =?UTF-8?q?=E3=81=AE=E8=A8=98=E8=BF=B0=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 64af23b59c..cd001823df 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -1,7 +1,6 @@ #! /usr/bin/env ruby require 'date' require 'optparse' -require 'debug' # 入力データのチェック def check_inputs(inputs) From 752e1502e6bb4406a6eb76e1054e2159badd2ddd Mon Sep 17 00:00:00 2001 From: shoma Date: Wed, 6 Aug 2025 16:02:38 +0900 Subject: [PATCH 12/12] =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E6=B5=81?= =?UTF-8?q?=E3=82=8C=E3=82=92=E8=87=AA=E7=84=B6=E3=81=AB=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=81=AB=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index cd001823df..06c8f54b01 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -34,7 +34,7 @@ def check_inputs(inputs) 11 => 'November', 12 => 'December' } # 出力する際に週と日付が同じ配列にあったほうが出力が楽であるため週と日を一緒にしてある -calendar = {:year => YEAR, :month => MONTHS[MONTH], :weeks_and_days => []} +calendar = {:year => YEAR, :month => MONTHS[MONTH], :weeks_and_days => [WEEKS]} def get_days(year, month) week_number = 1 @@ -66,6 +66,7 @@ def print_calendar(calendar) end end -calendar[:weeks_and_days] = get_days(YEAR, MONTH) -calendar[:weeks_and_days].unshift(WEEKS) +get_days(YEAR, MONTH).each do |days| + calendar[:weeks_and_days].push(days) +end print_calendar(calendar)