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

Back to archive index

Makamaka maka2_fswik****@donzo*****
2005年 12月 18日 (日) 02:26:49 JST


まかまかです。

Naoki Takezoe <takez****@gmail*****> wrote:
>URLエンコードは確かにあまりうまい方法だとは思いませんが、手でいじるときの
>ことを考えるのであれば
>
>> 分割する「=」の前後の空白が無視されることを利用して
>
>という実装上の都合を意識してないとはまってしまいそうな気が…。
>
>もちろんこれを意識しなくてはいけない場合というのはレアケースでしょうけれど、
>様々なプラグインから利用される関数でもあるわけですし、やるならきちっとエス
>ケープ処理を実装しとくべきなんじゃないかなぁと思います。
>
># そうすれば4.0でもそのコードが使えますし…。

うーん、言われてみれば。
であれば、いわゆるCSV準拠で
キーに'='か'"'がある場合、'"'は'""'に変換した上で'"'で囲む。
という処理はどうでしょうか。
(これも手でいじる場合に戸惑うと言われればそれまでですね……)


269,270c269,272
< 		if(index($line,"#")==0 || $line eq "\n" || $line eq "\r" || $line eq "\r\n"){
< 			next;
---
> 		next if($line eq '' or $line =~ /^#/);
> 		my ($name,$value) = ($line =~ /("[^"]*(?:""[^"]*)*"|[^=]*)=(.*)/);
> 		if( $name =~ /^"(.*)"$/){
> 			($name = $1) =~ s/""/"/g;
272,273d273
< 		my $name  = substr($line,0,index($line,'='));
< 		my $value = substr($line,index($line,'=')+1,length($line));
332a333,336
> 		my $value = $hash->{$key};
> 		if($key =~ s/"/""/g or $key =~ /=/){
> 			$key = '"' . $key . '"';
> 		}

参照
http://www.din.or.jp/~ohzaki/perl.htm#CSV2Values
http://www.din.or.jp/~ohzaki/perl.htm#CSVfromValues


----
まかまか
maka2_fswik****@donzo*****


Sat, 17 Dec 2005 21:12:54 +0900
[Fswiki-dev] Re: [RFC] キーに=を含む設定の取り扱い
Naoki Takezoe <takez****@gmail*****> wrote:

>竹添です。
>
>05/12/17 に Makamaka<maka2_fswik****@donzo*****> さんは書きました:
>> まかまかです。
>>
>> URLエンコードすると、直接設定ファイルを開いて弄るときに
>> 可読性が悪いので私は加藤さんの修正案でよいのではないかと思います。
>> (4.0ではまた別に考えるべきなのかもしれませんが)
>
>URLエンコードは確かにあまりうまい方法だとは思いませんが、手でいじるときの
>ことを考えるのであれば
>
>> 分割する「=」の前後の空白が無視されることを利用して
>
>という実装上の都合を意識してないとはまってしまいそうな気が…。
>
>もちろんこれを意識しなくてはいけない場合というのはレアケースでしょうけれど、
>様々なプラグインから利用される関数でもあるわけですし、やるならきちっとエス
>ケープ処理を実装しとくべきなんじゃないかなぁと思います。
>
># そうすれば4.0でもそのコードが使えますし…。
>
>--
>Naoki Takezoe <takez****@gmail*****>
>_______________________________________________
>Fswiki-dev mailing list
>Fswik****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/fswiki-dev





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