[Hiki-dev:00471] Re: mingw32 でプレビューのテキストの行末処理

Back to archive index

Kazuhiko kazuh****@fdiar*****
2003年 11月 16日 (日) 00:55:10 JST


かずひこです。

At Sat, 15 Nov 2003 20:51:31 +0900,
Atsushi Koga wrote:

> 以下の環境で動かしたとき
> 
> * Hiki 0.5-devel-20030823.(11/13 viewcvsからtar.gzダウンロード)
> * ruby 1.8.0 (2003-08-04) [i386-mingw32]  わたなべさん配布バイナリ
> * Amrita 1.0.2  わたなべさん配布バイナリ
> * apache 1.3.27(win32-x86-no_ssl)
> * Windows XP
> 
> プレビュー時の編集テキストの行末が%0D%0Aのままのようで、
> プレビューしてから保存とすると改行が1行おきにはいってしまうようです。

まず、私は Win 系のプラットホームでは一切動かしていないので、この件の動
作確認はできませんとお断りしたうえで、

> 添付の1行パッチで手元ではうまくいってるように見えるのですが
> どうでしょうか。
(snip)
> -      @plugin.text = text
> +      @plugin.text = text.gsub(/\r/, '')

改行コードの正規化ってこれで十分なのでしょうか? どうせやるなら

diff -u -r1.4.2.38 command.rb
--- hiki/command.rb	14 Nov 2003 13:04:31 -0000	1.4.2.38
+++ hiki/command.rb	15 Nov 2003 15:42:39 -0000
@@ -265,7 +265,7 @@
       
       data = Hiki::Util::get_common_data( @db, @plugin )
       @plugin.hiki_menu(data, @cmd)
-      @plugin.text = text
+      @plugin.text = text.gsub( /\r\n/, "\n" ).gsub( /\r/, '' ).sub( /\n+\z/, '' )
 
       data[:title]          = title( page )
       data[:pagename]       = a( :value => page )

こんな感じのほうがよいのでしょうか?  このあたり詳しい方がフォローくださ
ると幸いです。

> また、同一環境で hiki/page.rb の content-length 指定を
> はずさないと表示がおかしくなるんですが、
> # フッタの途中までで切れる
> これも改行がらみのようで、content-lengthがhtmlの中の改行コードの数の個数分

えーと、つまり
      header['Content-Length']   = html.size.to_s
の方が少なくなるということは、
html = "123\n456\n789\n" (html.size.to_s = 12)
みたいになっているのに、最後に出力されるものが
"123\r\n456\r\n789\r\n"
みたいになっていて、12 bytes で切られて
"123\r\n456\r\n78"
で終っちゃうみたいなことなのでしょうか?

だとすると tdiary みたいに、hiki.cgi の先頭とかに
BEGIN { $defout.binmode }
を追加すれば解決するでしょうか?

# さらについでに上の問題も解決したりして?
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  ★ぱーる「セミコロンが付いてない!」
  ☆るびぃ「あんなの飾りです。偉い人にはそれが分からんのです」



Hiki-dev メーリングリストの案内
Back to archive index