[Fswiki-dev] Re: [RFC] キーに=を含む設定の取り扱い

Back to archive index

N.Katoh typer_jp****@yahoo*****
2005年 12月 18日 (日) 14:35:12 JST


加藤です。大雪で家に籠ってます(笑)

On Sun, 18 Dec 2005 11:51:56 +0900
Naoki Takezoe <takez****@gmail*****> wrote:

> 竹添です。
> 
> 05/12/18 に Makamaka<maka2_fswik****@donzo*****> さんは書きました:
> > まかまかです。
> >
> > Naoki Takezoe <takez****@gmail*****> wrote:
> > >URLエンコードは確かにあまりうまい方法だとは思いませんが、手でいじる
> > >ときのことを考えるのであれば
> > >
> > >> 分割する「=」の前後の空白が無視されることを利用して
> > >
> > >という実装上の都合を意識してないとはまってしまいそうな気が…。
> > >
> > >もちろんこれを意識しなくてはいけない場合というのはレアケースでしょ
> > >うけれど、様々なプラグインから利用される関数でもあるわけですし、や
> > >るならきちっとエスケープ処理を実装しとくべきなんじゃないかなぁと思
> > >います。
> > >
> > ># そうすれば4.0でもそのコードが使えますし…。
> >
> > うーん、言われてみれば。
> > であれば、いわゆるCSV準拠で
> > キーに'='か'"'がある場合、'"'は'""'に変換した上で'"'で囲む。
> > という処理はどうでしょうか。
> > (これも手でいじる場合に戸惑うと言われればそれまでですね……)
> 
> 方法はどうあれ結局何らかの方法でエスケープしなければいけないわけで
> その方法が妥当かどうか、というところが判断基準になると思います。
> CSV準拠の方法であれば、FSWikiでのテーブル記法でも使用していますし、
> 割と一般的な方法なので納得感があると思うのですが、

ただ、「CSVではない所にその方法が出てくる」という点でちょと微妙かなと思
います。ただ、あらかじめ設定ファイルにCSV準拠である旨のコメントを入れて
おけば驚きも少ないですね。

> > 分割する「=」の前後の空白が無視されることを利用して
> 
> というのは、確かにうまい方法だとは思いますが、実装上都合がいい回避策と
> いうのがありありと見えてしまいますし、逆にこの仕様を知らない人にとって
> はコードを読まなければ絶対に出てこない発想だと思うんですよね。

たしかに独自仕様なのでわかり難いですね。


じゃあどうすればという話ですが、「key=value」形式で一般的な方法という所
で考えてみると、UNIX系ではsh、Win系ではiniファイルとなります。

shだと「"」「'」「\」それぞれ3様のエスケープ方法がありますが、「\」だけ
でも真面目に実装すればうまくエスケープできるようになります。これは最初の
案に近いですが、

・「\=」→リテラルとしての「=」
・「\\=」→リテラルとしての「\」+区切りとしての「=」
・「\\\=」→リテラルとしての「\=」
・「\\\\=」→リテラルとしての「\\」+区切りとしての「=」
...

と、「\」の対をちゃんと認識させる様にするという事です。
問題として、load時に「\a」とかの解釈をどうするかという点でしょうか。
最初の案では「\\」「\=」→「\」「=」だけでしたが、「\a」→「a」までやる
かどうか。
また、keyのみにするかvalueもエスケープの解釈をするかどうか。
互換性を考えると「\\」「\=」だけにとどめた方が影響範囲が少なくて良いです
が、「\」がエスケープ文字として扱われる場合とそうでない場合があるのは
一貫性に欠けるともいえます。

あと、iniファイルは...どうなってましたっけ。
iniでそんな問題に出会ったの記憶がない(^^;


いずれにしろエスケープ方法をあらかじめコメントとして入れておくとわかりや
すいですね。行頭が「#」はコメントであるというのも示せますし。

#[RFC]=意見求むなので皆さんの意見も聞きたいです。
-- 
typer <typer_jp****@yahoo*****> like perl,
  stay FreeBSD  http://freebsd.g.hatena.ne.jp/TransFreeBSD/
  use  fswiki   http://aaa-www.net/~typer/cgi-bin/wiki.cgi/diary
and named Noboru Katoh <typer****@chive*****>



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