#/***************************************************************************** # randisp.rb version 1.2 # # 概要: # メッセージをランダムに表示するtDiaryのプラグインです。 # 動作の確認は tDiary version 1.4.4 でのみ行っています。 # # 設定方法: # randisp.rbの機能をtDiaryへ追加するには、 # randisp.rbをtDiaryのpluginディレクトリに入れてください。 # # 使い方: # # randispメソッド: # 内容: 指定したメッセージの内の1つをランダムに出力します。 # 構文: randisp(メッセージ1, メッセージ2, メッセージ3, ... メッセージn) # 記述例: <%= randisp("おはよう", "こんにちは", "こんばんは") %> # 出力例: こんにちは # # randisp_filename_in_dirメソッド: # 内容: 指定したディレクトリ内のファイル名(&ディレクトリ名)の内1つを # ランダムに出力します。 # 構文: randisp_filename_in_dir(ディレクトリ名) # 記述例: <%= randisp_in_dir("/usr/local/diary/image") %> # 出力例: abc.jpg # # randisp_textfileメソッド: # 内容: 複数行に渡るテキストファイルから1行をランダムに出力します。 # 構文: randisp_textfile(ファイル名) # 記述例: <%= randisp_textfile("/usr/local/diary/hoge.txt") %> # hoge.txtの中身が↓こんな感じだとすると、 # ねこくん # いぬくん # うしくん # かえるくん # 出力例: うしくん # # Copyright(C) 2002 - 2005 NI-Lab. # Author: NI-Lab. # Access: http://www.nilab.info/ or http://nilab.hp.infoseek.co.jp/ # License: GPL #*****************************************************************************/ =begin ChangeLog 2005-06-19 NI-Lab. * randisp.rb version1.2 全メソッドにて、メソッド全体を begin rescue end で括って、 エラー発生時には空文字列を返して、 エラー内容を標準エラー出力へ出力するようにした。 2004-03-11 NI-Lab. * randisp.rb version1.1 randisp_textfile 作成 2002-12-05 NI-Lab. * randisp.rb version1.0 randisp 作成 randisp_filename_in_dir 作成 2002-11-29 NI-Lab. * 構想からつくりはじめまで =end def randisp(*msg) begin return msg[rand(msg.length)] rescue => e STDERR.print e return '' end end def randisp_filename_in_dir(dir) begin file_list = Dir.entries(dir) # -2, +2 しているのは 配列の先頭にある ./ と ../ を排除するため return file_list[rand(file_list.length - 2) + 2] rescue => e STDERR.print e return '' end end def randisp_textfile(file) begin lines = IO.readlines(file) return lines[rand(lines.length)] rescue => e STDERR.print e return '' end end