#!/usr/bin/env ruby # coding: utf-8 require 'cgi' c = CGI.new(:accept_charset => "UTF-8") # データファイルが別の文字コードかもしれないので kconv の toutf8 メソッドを # 用いて utf-8 に統一して正規表現マッチを行なう require 'kconv' db = {} open("syllabus.txt", "r") do |df| #データベース読み取り処理は全く同じ while line = df.gets line = line.toutf8 if /^科目名:\s*(.*)/ =~ line key = $1 db[key] = Hash.new elsif /^(\S+):\s*(.*)/ =~ line db[key][$1] = $2 end end end # 検索パターンはHTMLフォームへの入力値を取得する term = c["jiki"] whom = c["kyoi"] if term > "" # 開講時期指定に何か文字列を入れたなら ptn = Regexp.new(term) # 文字列を正規表現に変換 db = db.select {|k, v| ptn =~ v["開講時期"]} end if whom > "" # 担当教員指定に何か文字列を入れたなら ptn = Regexp.new(whom) # 文字列を正規表現に変換 db = db.select {|k, v| ptn =~ v["担当教員"]} end print("Content-type: text/html; charset=utf-8 検索結果 ") puts("

該当科目一覧

") puts("") db.each {|k, h| printf("\n", k) h.each {|key, value| printf("\n", key, value) } } puts("
%s
%s%s
") puts(" ")