### 20XX MakeLifeScedule.rb ### $ebtpath="/mnt/card/ebt/"; startyear=2009; endyear=2011+1; nsmksmri=[31,28,31,30,31,30,31,31,30,31,30,31]; youbi=["日","月","火","水","木","金","土"]; def t(b,a);(b+b/4-b/?d+b/400+(13*a+8)/5+1)%7;end; #bookmark.indexに/20xx/year/scaduletopと追記。 fp = File.open($ebtpath+"bookmark.index", "a"); fp.puts("/20xx/year/sceduletop"); fp.close(); #ファイルは全部↓のディレクトリ内に作るよ path20xx="#{$ebtpath}20xx/"; Dir.mkdir(path20xx) if (!FileTest.exist?(path20xx)); #年単位ファイル(スケジュールtop)の作成 #まずは格納ディレクトリ作成 pathyear="#{path20xx}year/"; Dir.mkdir(pathyear) if (!FileTest.exist?(pathyear)); #それからファイル if (!FileTest.exist?(sceduletop=pathyear+"sceduletop.txt")) fp = File.new(sceduletop, "w"); fp.puts("Life Scedule"); fp.puts("人生目標、達成したいこと:\n\n"); (endyear-startyear).times{|num|fp.puts(startyear+num);} fp.close(); end #年単位ファイルにぶら下がるファイル達の作成 (endyear-startyear).times{|num| if (!FileTest.exist?(subfile=pathyear+"#{startyear+num}.txt")); fp = File.new(subfile, "w"); fp.puts("#{startyear+num}年"); z=" ";_=startyear+num;12.times{|i|$*<0&&c[o]=y.to_s.rjust(2);y+=1};t+=c*z+b;j>1&&(r+=7;fp.puts t.rstrip)}}} fp.close(); end if (!FileTest.exist?(subfile=pathyear+"#{startyear+num}plan.txt")); fp = File.new(subfile, "w"); fp.puts("*#{startyear+num}年間予定"); fp.puts("毎月行うこと:\n・住民税振込\n・年金振込\n\n"); fp.puts("1月\n2月\n3月\n4月\n5月\n6月\n7月\n8月\n9月\n10月\n11月\n12月"); fp.close(); end } if (!FileTest.exist?(subfile=pathyear+"weekly.txt")); fp = File.new(subfile, "w"); fp.puts("*週間予定"); ["月曜","火曜","水曜","木曜","金曜","土曜","日曜"].map{|s|fp.puts("#{s}\n\n");} fp.close(); end if (!FileTest.exist?(subfile=pathyear+"todolist.txt")); fp = File.new(subfile, "w"); fp.puts("*Todo List"); fp.puts("*このファイルは1個しかないよ"); fp.close(); end #上記ファイル達のindex作成 if (!FileTest.exist?(subfile=pathyear+"sceduletop.index")); fp = File.new(subfile, "w"); fp.puts("/bookmark"); (endyear-startyear).times{|num|fp.puts("/20xx/year/#{startyear+num}");} fp.puts("/20xx/year/weekly"); fp.puts("/20xx/year/todolist"); fp.close(); else #年単位分割作成時は必要年度の追記 fp = File.new(subfile, "a"); (endyear-startyear).times{|num|fp.puts("/20xx/year/#{startyear+num}");} fp.close(); end #後でまとめて作る #(endyear-startyear).times{|num| # if (!FileTest.exist?(subfile=pathyear+"#{startyear+num}.index")); # fp = File.new(subfile, "w"); # fp.puts("/20xx/year/sceduletop"); # fp.puts("/20xx/year/#{startyear+num}plan"); # fp.close(); # end #} (endyear-startyear).times{|num| if (!FileTest.exist?(subfile=pathyear+"#{startyear+num}plan.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/year/#{startyear+num}"); fp.close(); end } if (!FileTest.exist?(subfile=pathyear+"weekly.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/year/sceduletop"); #全ての日単位のチェックリストにリンクしたら?要細分化?未検討 fp.close(); end if (!FileTest.exist?(subfile=pathyear+"todolist.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/year/sceduletop"); (endyear-startyear).times{|num| 12.times{|mon| fp.puts("/20xx/mon/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); } } fp.close(); end #月単位ファイルの作成 #まずは格納ディレクトリ作成 pathmon="#{path20xx}mon/"; Dir.mkdir(pathmon) if (!FileTest.exist?(pathmon)); #次にファイル (endyear-startyear).times{|num| 12.times{|mon| if (!FileTest.exist?(subfile=pathmon+"#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.txt")); fp = File.new(subfile, "w"); fp.puts("#{startyear+num}年#{(mon+1)>9?"":"0"}#{mon+1}月"); fp.puts("毎日行うこと:\n\n"); if((startyear+num)%4==0&&mon==1);nsmksmri[mon]=29;end youbistart=t(startyear+num,mon+1); if mon==0;youbistart=t(startyear+num,13)-1;end if mon==1;youbistart=t(startyear+num,14)-1;end (nsmksmri[mon]).times{|day|fp.puts("#{(startyear+num-2000)<10?"0":""}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}(#{youbi[(youbistart+day)%7]})");} nsmksmri[1]=28; fp.close(); end #記録まとめ関係ファイル if (!FileTest.exist?(subfile=pathmon+"s#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.txt")); fp = File.new(subfile, "w"); fp.puts("*#{startyear+num}年#{(mon+1)>9?"":"0"}#{mon+1}月記録"); fp.puts("総括"); fp.close(); end if (!FileTest.exist?(subfile=pathmon+"s#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/mon/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); 5.times{|status|fp.puts("/20xx/mon/s0#{status+1}0#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}");} fp.close(); end 5.times{|status| if (!FileTest.exist?(subfile=pathmon+"s0#{status+1}0#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.txt")); fp = File.new(subfile, "w"); fp.puts("#{startyear+num}年#{(mon+1)>9?"":"0"}#{mon+1}月0#{status+1}0#{["睡眠","食事","運動","体調","所感"][status]}まとめ"); fp.close(); end if (!FileTest.exist?(subfile=pathmon+"s0#{status+1}0#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/mon/s#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); if((startyear+num)%4==0&&mon==1);nsmksmri[mon]=29;end (nsmksmri[mon]).times{|day| fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s0#{status+1}0#{(day+1)>9?"":"0"}#{day+1}"); } nsmksmri[1]=28; fp.close(); end } } } #年間単位のファイルのindexにぶら下げる (endyear-startyear).times{|num| if (!FileTest.exist?(subfile=pathyear+"#{startyear+num}.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/year/sceduletop"); fp.puts("/20xx/year/#{startyear+num}plan"); 12.times{|mon|fp.puts("/20xx/mon/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}");} fp.close(); end } #日単位ファイル・ディレクトリの作成 (endyear-startyear).times{|num| 12.times{|mon| pathday="#{path20xx}#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/" Dir.mkdir(pathday) if (!FileTest.exist?(pathday)); if((startyear+num)%4==0&&mon==1);nsmksmri[mon]=29;end youbistart=t(startyear+num,mon+1); if mon==0;youbistart=t(startyear+num,13)-1;end if mon==1;youbistart=t(startyear+num,14)-1;end (nsmksmri[mon]).times{|day| if (!FileTest.exist?(subfile=pathday+"#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}年#{(mon+1)>9?"":"0"}#{mon+1}月#{(day+1)>9?"":"0"}#{day+1}日(#{youbi[(youbistart+day)%7]})"); fp.puts("予定"); 24.times{|hour|#["00","15","30","45"].map{|q| #fp.puts("#{(hour)>9?"":"0"}#{hour}:#{q}"); fp.puts("#{(hour)>9?"":"0"}#{hour}:00"); }#} fp.close(); end if (!FileTest.exist?(subfile=pathday+"s010#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("010睡眠記録/#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}*"); fp.close(); end if (!FileTest.exist?(subfile=pathday+"s020#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("020食事記録/#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}*"); fp.close(); end if (!FileTest.exist?(subfile=pathday+"s030#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("030運動記録/#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}*"); fp.puts("0,腕立て\n0,腹筋\n0,踏み台昇降運動\n0,コアリズム"); fp.close(); end if (!FileTest.exist?(subfile=pathday+"s040#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("040体調記録/#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}*"); fp.puts("体重[kg]:\n体脂肪率[%]:\n"); fp.close(); end if (!FileTest.exist?(subfile=pathday+"s050#{(day+1)>9?"":"0"}#{day+1}.txt")) fp = File.new(subfile, "w"); fp.puts("050所感記録/#{(startyear+num-2000)>9?"":"0"}#{startyear+num-2000}/#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}*"); fp.close(); end } nsmksmri[1]=28; } } #日単位indexの作成 (endyear-startyear).times{|num| 12.times{|mon| pathday="#{path20xx}#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/" Dir.mkdir(pathday) if (!FileTest.exist?(pathday)); if((startyear+num)%4==0&&mon==1);nsmksmri[mon]=29;end (nsmksmri[mon]).times{|day| if (!FileTest.exist?(subfile=pathday+"#{(day+1)>9?"":"0"}#{day+1}.index")) fp = File.new(subfile, "w"); fp.puts("/20xx/mon/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s010#{(day+1)>9?"":"0"}#{day+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s020#{(day+1)>9?"":"0"}#{day+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s030#{(day+1)>9?"":"0"}#{day+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s040#{(day+1)>9?"":"0"}#{day+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/s050#{(day+1)>9?"":"0"}#{day+1}"); fp.close(); end 5.times{|status| if (!FileTest.exist?(subfile=pathday+"s0#{status+1}0#{(day+1)>9?"":"0"}#{day+1}.index")) fp = File.new(subfile, "w"); # fp.puts("/20xx/mon/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}"); fp.puts("/20xx/mon/s0#{status+1}0#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); fp.close(); end } } nsmksmri[1]=28; } } #月単位ファイルのindex作成 (endyear-startyear).times{|num| 12.times{|mon| if (!FileTest.exist?(subfile=pathmon+"#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}.index")); fp = File.new(subfile, "w"); fp.puts("/20xx/year/#{startyear+num}"); fp.puts("/20xx/mon/s#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}"); if((startyear+num)%4==0&&mon==1);nsmksmri[mon]=29;end (nsmksmri[mon]).times{|day|fp.puts("/20xx/#{startyear+num}#{(mon+1)>9?"":"0"}#{mon+1}/#{(day+1)>9?"":"0"}#{day+1}");} nsmksmri[1]=28; fp.puts("/20xx/year/todolist"); fp.close(); end } }