From 6d4b5d3ddebe69dcca62d8b23d6089a710b56798 Mon Sep 17 00:00:00 2001 From: jepe-w Date: Wed, 28 Feb 2024 14:26:40 +0900 Subject: [PATCH 1/7] Assignment submission Calendar --- 02.calendar/calendar.rb | 69 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 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..14faf3ca47 --- /dev/null +++ b/02.calendar/calendar.rb @@ -0,0 +1,69 @@ +#!/usr/bin/env ruby +require "date" +require "optparse" + +class WorkClendar + def initialize() + opt = OptionParser.new + + opt.on('-y') {|v| v} + opt.on('-m') {|v| v} + + @request = opt.parse!(ARGV) + @request = ARGV + end + + def calendar + days = [] + num = 0 + + #デフォルトの日にちを取得 + default = Date.today.to_s + default = default.split("-") + if @request == [] + default_year = default[0] + else + default_year = @request[0] + end + + if @request == [] + default_month = default[1] + else + default_month = @request[1] + end + + #日にちを取得 + designated_date = Date.new(default_year.to_i, default_month.to_i, 1) + month_days = ((designated_date >> 1) - 1).day + date = designated_date.wday + + #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) + date.times do + days.push(" ") + end + #その月の日数分daysに日にちを追加 + month_days.times do + num += 1 + if num < 10 + days.push(" #{num}") + else + days.push(num) + end + end + + #余白を含めた日にちを一週間ごとに分割 + new_days = days.each_slice(7).to_a + + #カレンダーの年、月を出力 + puts designated_date.strftime("%B %Y").center(20) + + #一週間ごとに分けた配列をそれぞれくっつけて曜日と一緒に出力。 + puts ("日 月 火 水 木 金 土") + new_days = new_days.map{|item| puts item.join(" ")} + + end + +end + +result_calendar = WorkClendar.new +result_calendar.calendar \ No newline at end of file From 7a83d14b0855eebc50d90ab3d7ff8a3084cb9ab6 Mon Sep 17 00:00:00 2001 From: jepe-w Date: Mon, 4 Mar 2024 09:33:51 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=AE=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 | 106 ++++++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 14faf3ca47..ab56096a56 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -3,66 +3,64 @@ require "optparse" class WorkClendar - def initialize() - opt = OptionParser.new + def initialize() + opt = OptionParser.new - opt.on('-y') {|v| v} - opt.on('-m') {|v| v} + opt.on('-y') {|v| v} + opt.on('-m') {|v| v} - @request = opt.parse!(ARGV) - @request = ARGV - end - - def calendar - days = [] - num = 0 - - #デフォルトの日にちを取得 - default = Date.today.to_s - default = default.split("-") - if @request == [] - default_year = default[0] - else - default_year = @request[0] - end - - if @request == [] - default_month = default[1] - else - default_month = @request[1] - end - - #日にちを取得 - designated_date = Date.new(default_year.to_i, default_month.to_i, 1) - month_days = ((designated_date >> 1) - 1).day - date = designated_date.wday - - #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) - date.times do - days.push(" ") - end - #その月の日数分daysに日にちを追加 - month_days.times do - num += 1 - if num < 10 - days.push(" #{num}") - else - days.push(num) - end - end - - #余白を含めた日にちを一週間ごとに分割 - new_days = days.each_slice(7).to_a - - #カレンダーの年、月を出力 - puts designated_date.strftime("%B %Y").center(20) + @request = opt.parse!(ARGV) + @request = ARGV + end + + def calendar + days = [] + num = 0 - #一週間ごとに分けた配列をそれぞれくっつけて曜日と一緒に出力。 - puts ("日 月 火 水 木 金 土") - new_days = new_days.map{|item| puts item.join(" ")} + #デフォルトの日にちを取得 + default = Date.today.to_s + default = default.split("-") + if @request == [] + default_year = default[0] + else + default_year = @request[0] + end + + if @request == [] + default_month = default[1] + else + default_month = @request[1] + end + #日にちを取得 + designated_date = Date.new(default_year.to_i, default_month.to_i, 1) + month_days = ((designated_date >> 1) - 1).day + date = designated_date.wday + + #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) + date.times do + days.push(" ") end + #その月の日数分daysに日にちを追加 + month_days.times do + num += 1 + if num < 10 + days.push(" #{num}") + else + days.push(num) + end + end + + #余白を含めた日にちを一週間ごとに分割 + new_days = days.each_slice(7).to_a + + #カレンダーの年、月を出力 + puts designated_date.strftime("%B %Y").center(20) + #一週間ごとに分けた配列をそれぞれくっつけて曜日と一緒に出力。 + puts ("日 月 火 水 木 金 土") + new_days = new_days.map{|item| puts item.join(" ")} + end end result_calendar = WorkClendar.new From 7660057ee568296bc8b1b38c82d2a9db6c670761 Mon Sep 17 00:00:00 2001 From: jepe-w Date: Wed, 6 Mar 2024 10:32:50 +0900 Subject: [PATCH 3/7] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E6=8C=87=E6=91=98=E7=AE=87=E6=89=80=E3=81=AE=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 71 +++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 41 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index ab56096a56..e295ca4197 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -1,67 +1,56 @@ #!/usr/bin/env ruby require "date" require "optparse" +require 'debug' -class WorkClendar +class Clendar def initialize() - opt = OptionParser.new + opt = OptionParser.new - opt.on('-y') {|v| v} - opt.on('-m') {|v| v} - - @request = opt.parse!(ARGV) - @request = ARGV + opt.on('-y') + opt.on('-m') + opt.parse!(ARGV) + ARGV end - def calendar - days = [] - num = 0 - - #デフォルトの日にちを取得 - default = Date.today.to_s - default = default.split("-") - if @request == [] - default_year = default[0] + def create_calendar + if ARGV == [] + target_year = Date.today.year else - default_year = @request[0] + target_year = ARGV[0] end - if @request == [] - default_month = default[1] + if ARGV == [] + target_month = Date.today.mon else - default_month = @request[1] + target_month = ARGV[1] end - - #日にちを取得 - designated_date = Date.new(default_year.to_i, default_month.to_i, 1) - month_days = ((designated_date >> 1) - 1).day - date = designated_date.wday + + first_day_of_designated_date = Date.new(target_year.to_i, target_month.to_i, 1) + month_days = Date.new(target_year.to_i, target_month.to_i, -1).day + get_day_of_week = first_day_of_designated_date.wday #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) - date.times do + days = [] + get_day_of_week.times do days.push(" ") end #その月の日数分daysに日にちを追加 - month_days.times do - num += 1 - if num < 10 - days.push(" #{num}") + month_days.times do |n| + n += 1 + if n < 10 + days.push(" #{n}") else - days.push(num) + days.push(n) end end - #余白を含めた日にちを一週間ごとに分割 - new_days = days.each_slice(7).to_a - - #カレンダーの年、月を出力 - puts designated_date.strftime("%B %Y").center(20) - - #一週間ごとに分けた配列をそれぞれくっつけて曜日と一緒に出力。 + week = days.each_slice(7).to_a + puts first_day_of_designated_date.strftime("%B %Y").center(20) puts ("日 月 火 水 木 金 土") - new_days = new_days.map{|item| puts item.join(" ")} + week.each{|day| puts day.join(" ")} end end -result_calendar = WorkClendar.new -result_calendar.calendar \ No newline at end of file +result_calendar = Clendar.new +result_calendar.create_calendar From adb31b67610a0ade0dee14d570b92a5c59fd248d Mon Sep 17 00:00:00 2001 From: jepe-w Date: Sat, 9 Mar 2024 20:57:21 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E3=81=A7=E3=81=AE=E6=8C=87=E6=91=98=E7=AE=87=E6=89=80=E6=94=B9?= =?UTF-8?q?=E5=96=84=E3=80=80v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 78 +++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 45 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index e295ca4197..23d3a261d8 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -1,56 +1,44 @@ #!/usr/bin/env ruby require "date" require "optparse" -require 'debug' -class Clendar - def initialize() - opt = OptionParser.new +def create_calendar + opt = OptionParser.new + target_year = Date.today.year + target_month = Date.today.mon + option = {} - opt.on('-y') - opt.on('-m') - opt.parse!(ARGV) - ARGV - end + opt.on('-y Integer') { + |y| option[:y] = y + target_year = option[:y] + } + opt.on('-m Integer') { + |m| option[:m] = m + target_month = option[:m]} + opt.parse!(ARGV) - def create_calendar - if ARGV == [] - target_year = Date.today.year - else - target_year = ARGV[0] - end - - if ARGV == [] - target_month = Date.today.mon + first_day = Date.new(target_year.to_i, target_month.to_i, 1) + month_day = Date.new(target_year.to_i, target_month.to_i, -1).day + day_of_week = first_day.wday + + #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) + days = [] + day_of_week.times do + days.push(" ") + end + #その月の日数分daysに日にちを追加 + 1.upto(month_day) do |d| + if d < 10 + days.push(" #{d}") else - target_month = ARGV[1] + days.push(d) end - - first_day_of_designated_date = Date.new(target_year.to_i, target_month.to_i, 1) - month_days = Date.new(target_year.to_i, target_month.to_i, -1).day - get_day_of_week = first_day_of_designated_date.wday - - #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) - days = [] - get_day_of_week.times do - days.push(" ") - end - #その月の日数分daysに日にちを追加 - month_days.times do |n| - n += 1 - if n < 10 - days.push(" #{n}") - else - days.push(n) - end - end - - week = days.each_slice(7).to_a - puts first_day_of_designated_date.strftime("%B %Y").center(20) - puts ("日 月 火 水 木 金 土") - week.each{|day| puts day.join(" ")} end + + week = days.each_slice(7).to_a + puts first_day.strftime("%B %Y").center(20) + puts ("日 月 火 水 木 金 土") + week.each{ |day| puts day.join(" ") } end -result_calendar = Clendar.new -result_calendar.create_calendar +create_calendar From 996c948f9ad63a78f4b9d5f2cdc6f1a57cb19d9a Mon Sep 17 00:00:00 2001 From: jepe-w Date: Wed, 13 Mar 2024 20:17:35 +0900 Subject: [PATCH 5/7] =?UTF-8?q?=E6=8C=87=E6=91=98=E7=AE=87=E6=89=80?= =?UTF-8?q?=E3=81=AE=E6=94=B9=E5=96=84=E3=80=80v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 23d3a261d8..10890b09d1 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -8,27 +8,27 @@ def create_calendar target_month = Date.today.mon option = {} - opt.on('-y Integer') { - |y| option[:y] = y - target_year = option[:y] - } - opt.on('-m Integer') { - |m| option[:m] = m - target_month = option[:m]} + opt.on('-y Integer') do |y| + target_year = y + end + + opt.on('-m Integer') do |m| + target_month = m + end opt.parse!(ARGV) first_day = Date.new(target_year.to_i, target_month.to_i, 1) - month_day = Date.new(target_year.to_i, target_month.to_i, -1).day + last_day = Date.new(target_year.to_i, target_month.to_i, -1).day day_of_week = first_day.wday - #曜日ぶんから文字を挿入(初日のスタート位置(曜日)をとるため) days = [] day_of_week.times do days.push(" ") end - #その月の日数分daysに日にちを追加 - 1.upto(month_day) do |d| - if d < 10 + + 1.upto(last_day) do |d| + single_digit_date = d < 10 + if single_digit_date days.push(" #{d}") else days.push(d) From 39501b74c7a918f8d9cf2ec08314cbe439d3f4da Mon Sep 17 00:00:00 2001 From: jepe-w Date: Sun, 17 Mar 2024 17:14:19 +0900 Subject: [PATCH 6/7] =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC?= =?UTF-8?q?=E6=8C=87=E6=91=98=E7=AE=87=E6=89=80=E3=81=AE=E6=94=B9=E5=96=84?= =?UTF-8?q?v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02.calendar/calendar.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/02.calendar/calendar.rb b/02.calendar/calendar.rb index 10890b09d1..99eecb5c86 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -17,18 +17,18 @@ def create_calendar end opt.parse!(ARGV) - first_day = Date.new(target_year.to_i, target_month.to_i, 1) - last_day = Date.new(target_year.to_i, target_month.to_i, -1).day - day_of_week = first_day.wday + first_date = Date.new(target_year.to_i, target_month.to_i, 1) + last_day = Date.new(target_year.to_i, target_month.to_i, -1) + day_of_week = first_date.wday days = [] day_of_week.times do days.push(" ") end - 1.upto(last_day) do |d| - single_digit_date = d < 10 - if single_digit_date + 1.upto(last_day.day) do |d| + is_single_digit_date = d < 10 + if is_single_digit_date days.push(" #{d}") else days.push(d) @@ -36,7 +36,7 @@ def create_calendar end week = days.each_slice(7).to_a - puts first_day.strftime("%B %Y").center(20) + puts first_date.strftime("%B %Y").center(20) puts ("日 月 火 水 木 金 土") week.each{ |day| puts day.join(" ") } end From 911d91a30ab51c146708c90b5bb8280a1e22914c Mon Sep 17 00:00:00 2001 From: jepe-w Date: Mon, 18 Mar 2024 17:28:10 +0900 Subject: [PATCH 7/7] =?UTF-8?q?=E5=A4=89=E6=95=B0=E6=94=B9=E5=96=84?= 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 99eecb5c86..480178e2df 100755 --- a/02.calendar/calendar.rb +++ b/02.calendar/calendar.rb @@ -18,7 +18,7 @@ def create_calendar opt.parse!(ARGV) first_date = Date.new(target_year.to_i, target_month.to_i, 1) - last_day = Date.new(target_year.to_i, target_month.to_i, -1) + last_date = Date.new(target_year.to_i, target_month.to_i, -1) day_of_week = first_date.wday days = [] @@ -26,7 +26,7 @@ def create_calendar days.push(" ") end - 1.upto(last_day.day) do |d| + 1.upto(last_date.day) do |d| is_single_digit_date = d < 10 if is_single_digit_date days.push(" #{d}")