Aug.1,2000 (Tue)
Aug.3,2000 (Thu)
Aug.4,2000 (Fri)
Aug.7,2000 (Mon)
▼通常の文ブロック内と引用部の両方のLF→BR制御が同時にON/OFFされるのはうれしくない事がある
+ 私が通常の日記本文を書くとき、その内容は「ndiaryによる整形前」 という意識が働いているせいか (*1)、設定ファイルでLF2BR はfalseにしています。
+ さて、私が日記中で何らかの記述を引用するとき、その引用物がすで に何らかのフォーマッタを通した出力である事が多いです。 ところが、それをLF2BRをfalseにした状況で、全行頭にtabをつけて、 ndiaryのblockquote変換が働くようにすると、引用部の整形が崩れて 「ありゃ〜ん」となります :-)
+ こういう部分は今までほぼ全てCode:にしちゃってたんですが、「引 用」という属性が消えてしまうので、後々の事を考えるとそれはあま り美しくないです。
+ blockquoteの時もCode:同様オプションが渡せるといいんですが、な にしろタブによる制御なので過去との互換性を保ちつつ拡張するのは ほぼ不可能なんですよねー。
+ Code:同様なQuote:っていう機構を作るとよいのかもしれませんが、 それもあまり美しくはないような気がしますし…。
▼空行を含むものをCode:に入れるのに難儀する
+ 上記事柄にちょいと関係するかも。
+ emacs lispやCのコードには空行がけっこう入っています。ところが、 ndiaryは空行がブロックの区切りなので、このへんのコードを日記中 に書くときに、単一のCode:に入れるには何らかの細工が必要になっ てしまいます。
+ Code:に-q1オプションをつけないなら、Code:に入れるモノの空行部 を<BR>に変換すればいいだけですが、-q1をつけるとこの手も 使えません。
+ でまぁ、以下のようなhere document的手法を考えたんですが…。
Code: -q1 << END
ほげほげ
ほげほげ
ふがふが
ふがふが
END+ この方法は過去との互換性の問題は生じないですが、「空行をブロッ クの区切りとする」が、ndiaryに動作の基本である以上、こんな仕 様を入れるのはあまり美しくないんですよね。
▼メタ文字問題
Aug.8,2000 (Tue)
■ndiary [nDiary]
+ いつも突然妙な事ばかり言いだしてすみません (^^;
+ 俺的にはコ ンフィグにQUOTE_LF2CR追加でもよいのですが、コンテンツ全体 でON/OFFするよりも、引用部の性質によってON/OFFしたいとは思うん ですよね〜。となるとQuote:って予約語の追加しかないんですが (^^;
+ HTMLやXHTMLの<BLOCKQUOTE>って、ブロック要素ならほぼなん でも入れられちゃうので、簡易的な記述できれいに表現するのは難し いですねぇ。他の日記システムではどうなってるんでしょう? もっ とも、少数派であろうタグ非明示型システムであるndiaryにとって、 他の日記システムの方法が有用とは限りませんか…。
+ 次はCode:内 の空行について。スペースを入れるのはまるっきり盲点でした。 ということで、「スペースなどで対処せよ」ってことで、Code:の拡 張は止めとくのが安全かもしれませんね。私の方法でもnotさんの方 法でも、ndiary のポリシーを一部壊してしまいますので…。 ちと余談ですが、エンドマークを\Codeのよう なに固定文字列にすると、Code: -c時に中身にその文字列を書けなく なってちと美しさに難点が出るかもです (^^;
+ エスケープの件ですが…まじめにやると面倒ですね。 で、今ふと思ったのですが…文頭に"■"などがある見出しではない一 行のみのブロックを書く頻度が低いだろうことを思うと、「どうにか したい人は『日記本文にちょっかいを出すフィルタ』でどうにかせよ」 という事にして、ndiary本体としては今のままってのはどうでしょうか。
+ (追記)…と、思ったけど、ndiaryによる 解釈前のテキストをフィルタに渡すってのも、改行の問題を考えると そう上手くないかも…。
Aug.9,2000 (Wed)
■ぐるぐる [NET]
+ 研究室のメインテーマはさておき、私自身はparser屋ではなかったですけどぉ (^^;
■あ [LIFE]
+ どうやら、アメリカに来てから1ヶ月経っ たらしい。うーん、はやいもんだな〜。残りはとりあえず3週間 の予定だけど、やはり予定は未定らしい。はう〜ん。
Aug.11,2000 (Fri)
■ndiaryネタ [nDiary]
+ あ、ndiaryには基本はsimpleであってほしいと私も思いますので、ほぼ完全 同意 しますです。
+ で、Quote:のオプションですが…。
+ 基本的には「Code:と同じオプション+改行制御オプション」でよいんじゃないかと 思います。ついでにCode:にも改行制御オプションをつけちゃって、Code:とQuote:の 違いは、単に外側のタグの違いだけにすると実装が楽だったりするかもしれませんね。
+ フィルタ呼 び出しのタイミングはいろいろ考えられますねぇ。 ちなみに、私が自前で入れてるフィルタは以下のmakeInlineDecorate()だけです (*1)。
def makeInlineDecorate(dstr)
str = dstr.dup
str.gsub!(/\*\*\*(.+?)\*\*\*/m,'<strong class="laud">\1</strong>')
str.gsub!(/\*\*(.+?)\*\*/m,'<strong>\1</strong>')
str.gsub!(/([^!]|^)--(.+?)--/m,'\1<strike>\2</strike>')
return str
end + で、無修正ブロックおよびCode:ブロック以外の場合に、これを 通すようにしてあります。これをフィルタとして実現するには、 「ブロック種別の判別後に、ブロックの種別を引数にして呼び出すフィ ルタ」が必要ですね。他にも、文字列→リンク自動変換フィルタや、 この前ちょっと出した「自前のエスケープ処理でメタ文字をはがすフィ ルタ」もこれと同じ種別になりますかね。
+ 段落ごとに切りわけた時点で渡すフィルタができる事だと…プリプロ セッサ的な仕事になりますかねぇ。同一の.diaryファイルから、公開 場所によって違うhtmlを吐かせたい場合はこういうのが有効だったり しますかねぇ?
Aug.15,2000 (Tue)
Aug.18,2000 (Fri)
■ぐる [NET]
+ inspireのゲームってホント独特の雰囲気がありますやね。ちなみに days innocentは、あかりが好きです。元気なちびっこはやはり好きだ(ぉ
+ そういや、inspireもシナリオ内容にあった音楽を自前で作れるとこ ろかな。とはいえ今までに出てくたゲーム、みんな同じような雰囲気 だったりするんだけど(笑)
+ (2000.8.19追加)けだるいゲームの雰囲気 に合ってはいたけど、曲自体の印象は残ってないなぁ。それがよいこ となのか悪いことなのかは不明ではあるけれど、音楽として「良い」 とは言えんか…ふむ。
■やっぱりなー [LIFE]
Aug.21,2000 (Mon)
Aug.25,2000 (Fri)
Aug.26,2000 (Sat)
■ちょいぐる [GAME]
+ 明記しなきゃなんでもOKなんでしょうね。なにしろ明記されてないとはいえヒロインも主人公も全員小学生のゲームがソフ倫通ってるくらいですからね〜。
■やきそば [LIFE]
Aug.29,2000 (Tue)
Aug.30,2000 (Wed)
■nDiary [nDiary]
+ 今回はプラグインいじり。
diff -c ./monthindex.rb.orig ./monthindex.rb
*** ./monthindex.rb.orig Mon Jun 19 13:00:00 2000
--- ./monthindex.rb Thu Aug 31 01:44:46 2000
***************
*** 17,22 ****
--- 17,23 ----
boder=n style=table 時の berder の サイズを指定します。
cellspacing=n style=table 時の cellspacing の サイズを指定します。
+ dst=filename 出力を ファイルfilename に切りかえます。
exsample:
<!--plug=monthindex?title=過去の日記?month=en?style=simple-->
***************
*** 85,90 ****
--- 86,103 ----
index << "\t</tr>\n\n"
end
index << "</table>\n\n"
+ end
+
+ if opt['dst'] and (not opt['dst'].empty?) then
+ begin
+ outfile = open(opt['dst'], "w")
+ outfile.print index
+ outfile.close
+ index = "<!--monthindex-->"
+ rescue Errno::ENOENT
+ $stderr.print "Plug-in error: monthindex > dst file not found!\n"
+ index = "<!--plug-in error: monthindex-->"
+ end
end
return index+ 私の日記ページのHTMLファイルは全部server-parsedなので、こうやっ て生成したファイルをlatest.htmlやpastdays.htmlで#includeするよ うにしてやれば、古い日記ファイルもいつでも最新のインデックスを 持てるようになるかなーとゆーことで。
+ 見てのとおり、dstパラメータを指定しなければ以前のmonthindexプ ラグインそのままの動きになるはず。
+ しかもこれで生成したファイルが以前仕込んだlastupdateのかわりになるというおまけもついたりして、俺的にはわりとniceな感じ。でも、キャッシュ云々を考えるとserver-parsedなhtmlなるのはあまり嬉しくないので、応用性はたぶん低いでしょうな。ま、自己満足ってことで。