[TOPに戻る] [最新の日記] [タイトル一覧] [カテゴリ別一覧] [HeadLine] [Theme]  2000: 08 09 10 11 12  2001: 01 02 03 04 05 06 07

散財日記


Caution: current version is 2.2-beta1, public released version is 2.10-pl1.

先月[T] 2001月06日[T] 来月[T]
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
KEYWORD:
検索式:

2001年06月03日(Sun) 今日は何の日

[天気:晴れ] 睡眠:8時間

#3 [hns] 文中での特殊文字使用

. 文中で\♠\♣\♥\♦などの特殊文字を使う方法。 ALIAS を使ってもいいのだけど、いちいち定義するのも面倒なので・・・。

. 以下のパッチを theme.ph に追加します。 これにより、「\\&」で「&」が「&」に置換されるのを抑制することが出来ます。

. \♥を表示するには ♥ の前に \ を付けます。

################################################################
### Patch for Diary.pm
################################################################
package HNS::Diary;

sub HnfPrint ($){
    my $hnf_ = shift;

   $hnf_ =~ s/\\\&/&/g;       # \\& で & そのものを出力

    if ($HNS::System::Caching) {
        print X $hnf_;
    }
    else {
        $HNS::Diary::Hnf .= $hnf_;
    }
}

2001年06月11日(Mon) 今日は何の日

[天気:くもり時々雨] 睡眠:4時間

#2 [hns] <base href="..の出力抑制

. 静的生成した日記を、そっくり別サイトに置いても大丈夫なように <base href=".. の出力を制御できるようにしてみました。

~/publib_html/diary/lib/HNS.pm 変更点:

package HNS;
    .......
    print qq(<meta http-equiv="content-type" content="text/html; charset=EUC-JP">\n)
    if !($HNS::System::LessOutput);
#    print qq(<base href="$HNS::System::MyDiaryURI">\n)
#    if !($HNS::System::LessOutput);
    print qq(<base href="$HNS::System::MyDiaryURI">\n)
    if (!($HNS::System::LessOutput) && ($HNS::System::BaseOutput)) ;
    print qq(<link rev="made" href="mailto:$HNS::System::UserMail">\n)
    if !($HNS::System::LessOutput);
    .......

~/public_html/diary/config.ph 追加点:

$BaseOutput = 0 で <base href=... の出力を抑制します。
package HNS::System;
........
$BaseOutput = 0;	# 1 -> "<base href=.." output (default), 0 -> don't output

2001年06月14日(Thr) 今日は何の日

[天気:雨] 睡眠:4時間

#2 [hns] 日記のテーマ切り替え

. テーマdir単位での切り替えは、既存環境をいじる必要が少ないのでいいですね。 早速 localの日記環境に採用させていただきました(^^;

. 「head.txtやfoot.txtを使うと少し問題があるので、調整中。」とのことです が、これは head.txt/foot.txt を "$HNS::System::Theme/head.txt" で参照している箇所(HNS.pm)の影響だと思います。 なので、$theme_ph と同時に $HNS::System::Theme も書き換えてしまえば OK かと。

    my $theme_ext = param('style') . "/theme.ph";
    if (-f "$theme_ext") {
        $theme_ph = $theme_ext;
        $HNS::System::Theme = param('style');
    }

#5 [hns] 日記の引っ越し

DTIへの引っ越しに伴い "<base href=..." を DTI の方に振るようにしてみました。 こういうとき日記システムは変更を一気に反映できて便利ですね。
$MyDiaryURI = "http://www.ceres.dti.ne.jp/~m-hase/diary/"; 
$BaseOutput = 1;	# 1 -> <base href=.. ouput (default), 0 -> don't output

2001年06月19日(Tue) 今日は何の日

[天気:雨] 睡眠:4時間

#2 [hns][Ruby] RTtoolを利用したTABLE表示

rubikitch氏の RTtool を使って表を記述してみるのテスト。 RT〜/RTタグで囲ったところが RTtool に渡されます。 最初は RTtool を Perl で実装しようと思ったけど、面倒そうなので 今回はパス。RTは記述が簡潔でステキなので、 いずれ拝借して実装したいものです。

theme.ph 追加部分:

パイプ出力で渡したデータの処理結果を直接パイプ入力で受け取る方法 が分からなかった。テンポラリファイルも作りっぱなしでちと行儀悪いです。
################################################################
### Patch for Diary.pm
################################################################
package HNS::Diary;
use vars qw($RawMode);      # added
$RawMode = 0;   ### [0:Normal 1:RAW] # added

use vars qw($RTMode @RTBuf);        
$RTMode = 0;    ### [0:Normal 1:RT 2:/RT]
@RTBuf  = ();

sub HnfPrint ($){
   my $hnf_ = shift;

   ### RAW
   if( $hnf_ =~ /^<\!--RAW START-->/ ) { $RawMode = 1;}
   if( $hnf_ =~ /^<\!--RAW END-->/ ) { $RawMode = 0;}
   if( $RawMode == 1 ){
       $hnf_ =~ s/&amp;/&/g;
       $hnf_ =~ s/&lt;/</g;
       $hnf_ =~ s/&gt;/>/g;
   }

   ### RT
   if( $hnf_ =~ /^<\!--RT START-->/ ) { $RTMode = 1; @RTBuf=(); return; }
   if( $hnf_ =~ /^<\!--RT END-->/ ) { $RTMode = 2; }
   if( $RTMode == 1 ) {
       push(@RTBuf, $hnf_);
       return;
   } elsif( $RTMode == 2 ){
       my $cache = "$HNS::System::CacheDir/RTtool.tmp";
       open (PIPE_O, "| ruby rt2html > $cache") || die "Can't Create Cache File.\n";
       my $buf = join("",@RTBuf);
       print PIPE_O $buf;
       close(PIPE_O);

       $hnf_ = "";
       open (PIPE_I, $cache) || die "Can't Open Cache File.\n";
       while (<PIPE_I>) {
           $hnf_ .= $_;
       }
       close(PIPE_I);
       $RTMode = 0;
   }

   if ($HNS::System::Caching) {
    print X $hnf_;
   }
   else {
    $HNS::Diary::Hnf .= $hnf_;
   }
}
################################################################
package HNS::Hnf::Command::New;;
$AllowCommands = [ $HNS::Hnf::Command::New::AllowCommands,'RT'];

package HNS::Hnf::Command::Sub;
$AllowCommands = [ $HNS::Hnf::Command::Sub::AllowCommands,'RT'];

################################################################
### RT
package HNS::Hnf::Command::RT;
use vars qw(@ISA $Template $EndTemplate $NumAttr $IsOneline $AllowCommands
        $IsBeginSection $CountName $OmittableEnd);
@ISA = qw(HNS::Hnf::Command::Cite);
$AllowCommands = [$HNS::Hnf::Command::Entities{'Inline'}];
$Template = "<!--RT START-->\n";
$EndTemplate = "<!--RT END-->\n";
$OmittableEnd = 1;

RTtoolのインストール:

以下の場所からアーカイブを頂きました。 付属のドキュメントに従ってインストールしませう。 私は以下の手順でインストールしました。

実行例:

. 生HTMLで書いたら頭がこんがらがりそうな表も楽に記述できる。 RTtoolってすごいですね。

ぐるぐる
12
56
4910
811
7
3
 RT
 caption = ぐるぐる
 delimiter = :

  1:==:==:==:==: 2
  5:==:==:==: 6:||
  4: 9:==:10:||:||
 ||: 8:11:||:||:||
 ||:||: 7:==:==:||
 ||: 3:==:==:==:==
 /RT
複雑な表
へっ
ちゃら
 RT
 caption = 複雑な表
 
    , ふ   , く , == , ざ
 つ , な   , 表 , も , へっ
 || ,ちゃら, == , || , で
 す , ||   , == , ね , 。
 /RT

2001年06月20日(Wed) 今日は何の日

[天気:くもり] 睡眠:4時間

#2 [hns] RTtool方式の TABLE 実装

昨日の を Perlで実装してみるのテスト。

theme.ph 追加部分:

これ を theme.ph に追加します。

使用法:

RT 〜 /RT で囲んだ領域に RTtool の書式で表を記述します。
 RT
 1, 2, 3, 4
 5, 6, 7, 8
 9,10,11,12
 /RT
1234
5678
9101112

RTtoolの書式:

詳しくは Rubyを256倍使うための本 魔道編 [ISBN4-7561-3747-4: eS/bk/IS//JB/BO//AM//] を参照のこと。
 RT
  caption = テスト
  delimiter = :
 
  A:  B:  C: ==:  D:  E
 
  1:  2:  3:  4:  5:  6
  7: ==: ||:  8: ==:  9
 10: 11: 12: ||: ==: 13
 /RT
テスト
ABCDE
123456
789
10111213

2001年06月21日(Thr) 今日は何の日

[天気:雨] 睡眠:4時間

#2 [hns] backword compatibility に問題?

自分は hns-current 移行時に $Mode を config.ph に追加するのを忘れて 大ハマリしました(^^;
念のため、~/public_html/diary/lib/HNS/System.pm にデフォルト値を定義して おいた方が良いかもしれませんね。
$Mode = 'auto'; # 'dynamic', 'static' or 'auto'.

#3 [hns] RTtool 方式の TABLE 実装・弐式

オリジナルのデリミタの定義が
デリミタ文字と そのまわりの空白
だったので、それに併せて修正しました。 これでTABで適当に整形しながら","で区切る事が可能なハズ。

あと、修正ついでに表のスタイルを変更するコマンドをいくつか追加してみました。

theme.ph 追加部分:

これ です。スパゲッティ度が急上昇・・・。

(6/22) 余計なif文があったので削除。

RT(勝手に)拡張コマンド:

(6/22) コマンドの解釈を変更したので、表示が変になってます。
 RT
  caption       = RT(勝手に)拡張コマンド
  delimiter     = :
  table_border  = 2
  tbody_span    = 2
  thead_bgcolor = skyblue
  tbody_bgcolor = lightgreen

  コマンド :     ==        : 機能

    全体   : table_border  : 枠線の幅(ピクセル)
     ||    : table_width   : テーブルの幅(ピクセルまたは%)
     ||    : table_height  : テーブルの高さ(ピクセルまたは%)
     ||    : table_frame   : 外枠の表示方法 (void,above,below,hsides,vsides,lhs,rhs,box,border)
     ||    : table_rules   : 内側罫線の表示方法 (none,groups,rows,cols,all)
  ヘッダ部 : thead_bgcolor : BGCOLOR 指定
  ボディ部 : tbody_span    : 見出し扱いしたい列数(左から数えた数)
     ||    : tbody_width   : セルの幅(ピクセル)
     ||    : tbody_align   : セル配置(left,center,right)
     ||    : tbody_bgcolor : BGCOLOR 指定
 /RT
RT(勝手に)拡張コマンド
コマンド機能
全体table_border枠線の幅(ピクセル)
table_widthテーブルの幅(ピクセルまたは%)
table_heightテーブルの高さ(ピクセルまたは%)
table_frame外枠の表示方法 (void,above,below,hsides,vsides,lhs,rhs,box,border)
table_rules内側罫線の表示方法 (none,groups,rows,cols,all)
ヘッダ部thead_bgcolorBGCOLOR 指定
ボディ部tbody_span見出し扱いしたい列数(左から数えた数)
tbody_widthセルの幅(ピクセル)
tbody_alignセル配置(left,center,right)
tbody_bgcolorBGCOLOR 指定

2001年06月22日(Fri) 今日は何の日

[天気:くもり] 睡眠:5時間

#2 [hns] 続・RTtool方式の TABLE 実装

とりあえず完成ってことで。( theme.ph追加パッチ )

使用例兼 RT 拡張コマンド一覧:

追加したコマンドは、各タグに属性指定コマンドを挿入しているだけなので、 設定できても効果がないモノがあります。
 RT
  caption       = RT 拡張コマンド
  delimiter     = :
  table_border  = 2
  thead_bgcolor = skyblue
  tindex_span   = 3
  tindex_bgcolor= lightgreen
  tbody_bgcolor = white

  コマンド :  ==  :       ==      : 機能

  TABLE全体:  ==  : caption       : 表の題名
     ||    :  ==  : delimiter     : デリミタ
     ||    :  ==  : table_class   : スタイルシート指定
     ||    :  ==  : table_border  : 枠線の幅(ピクセル)
     ||    :  ==  : table_width   : テーブルの幅(ピクセルまたは%)
     ||    :  ==  : table_height  : テーブルの高さ(ピクセルまたは%)
     ||    :  ==  : table_frame   : 外枠の表示方法 (void,above,below,hsides,vsides,lhs,rhs,box,border)
     ||    :  ==  : table_rules   : 内側罫線の表示方法 (none,groups,rows,cols,all)
   THEAD部 :  ==  : thead_class   : スタイルシート指定
     ||    :  ==  : thead_bgcolor : BGCOLOR 指定
   TBODY部 :見出し: tindex_class  : スタイルシート指定
     ||    :  ||  : tindex_span   : グループ化する列数
     ||    :  ||  : tindex_width  : セルの幅(ピクセル)
     ||    :  ||  : tindex_align  : セル配置(left,center,right)
     ||    :  ||  : tindex_bgcolor: BGCOLOR 指定
     ||    : 本体 : tbody_class   : スタイルシート指定
     ||    :  ||  : tbody_span    : グループ化する列数
     ||    :  ||  : tbody_width   : セルの幅(ピクセル)
     ||    :  ||  : tbody_align   : セル配置(left,center,right)
     ||    :  ||  : tbody_bgcolor : BGCOLOR 指定
 /RT
RT 拡張コマンド
コマンド機能
TABLE全体caption表の題名
delimiterデリミタ
table_classスタイルシート指定
table_border枠線の幅(ピクセル)
table_widthテーブルの幅(ピクセルまたは%)
table_heightテーブルの高さ(ピクセルまたは%)
table_frame外枠の表示方法 (void,above,below,hsides,vsides,lhs,rhs,box,border)
table_rules内側罫線の表示方法 (none,groups,rows,cols,all)
THEAD部thead_classスタイルシート指定
thead_bgcolorBGCOLOR 指定
TBODY部見出しtindex_classスタイルシート指定
tindex_spanグループ化する列数
tindex_widthセルの幅(ピクセル)
tindex_alignセル配置(left,center,right)
tindex_bgcolorBGCOLOR 指定
本体tbody_classスタイルシート指定
tbody_spanグループ化する列数
tbody_widthセルの幅(ピクセル)
tbody_alignセル配置(left,center,right)
tbody_bgcolorBGCOLOR 指定

2001年06月24日(Sun) 今日は何の日

[天気:晴れ] 睡眠:12時間

#3 [hns] RTコマンドの NoTable 環境対応

. NoTable環境で、変換待ちの RTtool 要素を<pre>〜</pre>で出力するよ うにしただけですが。( theme.ph追加パッチ )

. ふと思ったが、キャッシュ有りの環境だとダメじゃん(^^;

#4 [hns] 「きょうは何の日」表示

[ A Way Out ]経由

. リンク自由ということで、富山いづみさんの きょうは何の日〜毎日が記念日〜 のページを使わせていただくことにしました。 theme.ph の変更点は以下の通り。

package HNS::Diary;

$Head{dynamic} = qq(
<h2><a class="hide" href="%href" name="%name">%year年%month月%day日(%week)</a>
[<a href="$HNS::System::MyDiaryURI?%month%day">n年日記</a>]
 <a href="http://nnh.to/%month/%day.html">今日は何の日</a></h2>
);
$Head{static} = qq(
<h2><a class="hide" href="%href" name="%name">%year年%month月%day日(%week)</a>
 <a href="http://nnh.to/%month/%day.html">今日は何の日</a></h2>
);
それにしても、いっぱい記念日あるものですねぇ。 今日(6/24)がUFO記念日なんて知りませんでしたよ。

2001年06月28日(Thr) 今日は何の日

[天気:晴れのち雨] 睡眠:4時間

#4 [Emacs][hns] hnf-mode.el

RT Table コマンド 用の記述を追加しました。
;;;----------------------------------------------------------------
;;; ハイパー日記システム (hnf-mode.el)  [2001/06/28]
;;;----------------------------------------------------------------
(autoload 'hnf "hnf-mode" nil t)
(autoload 'hnf-mode "hnf-mode" nil t)
(autoload 'yotei "hnf-yotei" nil t)
(setq auto-mode-alist (cons '("\\.hnf$" . hnf-mode) auto-mode-alist))

(setq hnf-diary-dir "~/diary")
(setq hnf-html-dir "~/public_html/diary")
(setq hnf-diary-year-directory-flag t)
(setq hnf-hour-not-today 6)

(add-hook 'hnf-mode-load-hook
          '(lambda ()
             (setq hnf-commands-table
                   (append
                    '(
                      ("ISBN"   . ((args . (("isbn" . ((face . hnf-link-face)))
                                            ("title")))))
                      ("CD"     . ((args . (("code" . ((face . hnf-link-face)))
                                            ("title")))))
                      ("TABLE"  . ((need-close)
                                   (insert-string-after-newline . "TR \nTD ")))
                      ("TR"     . ((insert-string-after-newline . "TD ")))
                      ("TH")
                      ("TD")
                      ("RT"     . ((need-close)
                                   (insert-string-after-newline . " caption = ")))
                      ("TAG")
                      ("RAW"    . ((need-close))))
                    hnf-commands-table))))

(setq file-coding-system-alist
      (append '(("\\.hnf$"  . euc-japan))
               file-coding-system-alist))

以上、30 日分です。
Powered by hns-2.2-beta1, HyperNikkiSystem Project

MAKOPi <m-hase@ceres.dti.ne.jp>
[TOPへ戻る] [最新の日記]