はじめてのRubyへのすすめ
id:fkmさんがRubyを始めたみたいなので、
ちょっとカスタマイズ。
forで回すよりは、timesで回した方がコードとしては、すんなり読めるし、
式展開を使うと楽だと思う。
1 2 def puts_contents(num , count) 3 puts "<table border=\"1\">" 4 count.times{ |index| print "<tr><td><a href=\"#{num}-#{index+1}.cpp\">#{num}-#{index+1}.cpp</a></td></tr>\n" } 5 puts "</table>" 6 end 7 8 def print_table(n, item) 9 puts "<table border=\"1\">" 10 for i in 1..item 11 printf("<tr><td><a href=\"%s-%d.cpp\">%s-%d.cpp</a></td></tr>\n", n, i, n, i) 12 end 13 puts "</table>" 14 end 15 16 def puts_header 17 puts <<EOH 18 <html lang="ja"> 19 <head> 20 <meta http-equiv="Content-type" content="text/html;charset=euc-jp"> 21 <title>プログラムファイルリスト</title> 22 </head> 23 <body> 24 EOH 25 end 26 27 def puts_eod 28 puts <<EOF 29 </body> 30 </html> 31 EOF 32 end 33 34 # 35 # exp) 36 # 37 # if __FILE__ == $0 38 # old_main 39 # end 40 # 41 # #ruby XX.rb > log.old.html 42 # 43 def old_main 44 puts_header 45 print_table("01", 25) 46 print_table("02", 18) 47 puts_eod 48 end 49 50 # 51 # exp) 52 # 53 # if __FILE__ == $0 54 # new_main 55 # end 56 # 57 # #ruby XX.rb > log.new.html 58 # 59 def new_main 60 puts_header 61 puts_contents("01", 25) 62 puts_contents("02", 18) 63 puts_eod 64 end 65 66 # >>>>>>>>> if you use unit test 67 require "test/unit" 68 class OutputhtmlTest < Test::Unit::TestCase 69 70 def test_main 71 oldresult = open( "log.old.html" , "r" ).readlines 72 newresult = open( "log.new.html" , "r" ).readlines 73 assert_equal( oldresult , newresult ) 74 end 75 76 end 77 # <<<<<<<<< if you exec unit test 78 79 # >>>>>>>>> if you exec main transaction 80 if $0 == __FILE__ 81 #new_main 82 #old_main 83 end 84 # <<<<<<<<< if you exec main transaction 85