よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

February 01, 2003 [おもひで]

[tDiary] kbannerプラグイン

高林さんとこを読んで、おもしろそうだったのでtDiaryでもやってみた。コードは高林さんのモノをパク流用させていただいた。

まず、kbanner2のサイトからkbanner2をダウンロードしコンパイルし、tdiary.rbがあるディレクトリに置く。

次に、以下のコードをkbanner.rbとして保存し、pluginディレクトリに置く。

if @options
   @kbanner_fg = @options["kbanner.fg"]
   @kbanner_bg = @options["kbanner.bg"]
   @kbanner_cmd = @options["kbanner.cmd"]
end
 
@kbanner_fg = %Q[<span style="color:green">*</span>] unless @kbanner_fg
@kbanner_bg = %Q[<span style="color:white">_</span>] unless @kbanner_bg
@kbanner_cmd = "./kbanner" unless @kbanner_cmd
 
def kbanner(str, vertical = false, large = true)
   opt = ""
   opt += " -#{str.size} " unless vertical
   opt += " -s " unless large
   bitmap = `echo -n '#{str}'| #{@kbanner_cmd} #{opt}`
   ret = ""
   bitmap.each_line {|line|
      line.each_byte {|char|
         if char == ?\s
            ret << @kbanner_bg
         elsif char == ?; or char == ?, or char == ?' or char == ?#
            ret << @kbanner_fg
         end
      }
      ret << '<br>'
   }
   ret
end

これで準備OK。あとは以下のように使う。

<%= kbanner 'あほ' %>

実行結果:

____________**__________________________________________________
____________**______________________**__________________________
____**********************__________**____********************__
__________**______________________****______________**__________
__________**______**______________**________________**__________
__________**************__________**________________**__________
______******______**__******______**______********************__
____****__**______**______**______**________________**__________
____**____**______**______****____**________________**__________
__****____**____**__________**____**________________**__________
__**______**____**__________**____**________**********__________
__**______**__**__________****____**______**________******______
__**______****____________**______**__**__**________**__****____
____******____________******______****____**______****____****__
__________________******____________**______********____________
________________________________________________________________

オプションは以下の通り。

@options["kbanner.fg"] - 文字の部分の形状・CSSを指定

@options["kbanner.bg"] - 空白の部分の形状・CSSを指定

@options["kbanner.cmd"] - kbannerコマンドを指定(フルパス・相対パス)

ちと重いかなぁ。XREAで使うのはやめとこ。

本日のツッコミ(全4件) [ツッコミを入れる]
なかだ (February 01, 2003 12:14)

char == ? はsyntax errorになりませんか。
?\sのほうがお勧めかも。

むとぽん (February 01, 2003 16:54)

おぉ。直しました。
元々は半角スペースが入っていたのですが何かの拍子に消えてしまったようです(高林さんのソースでは半角スペースがきちんと入ってます、念のため)。

なかだ (February 01, 2003 18:06)

あ、エラーになるのは1.8だけか。
1.6でもwarningは出るので、スペースとか改行はエスケープ形式のほうがいいです。

むとぽん (February 01, 2003 20:23)

ほんとだ。1.8だとエラーになりますね。


編集