[#36672] [Bug #616] instance_eval and Module#to_s — Shyouhei Urabe <redmine@...>

Bug #616: instance_eval and Module#to_s

12 messages 2008/10/06

[#36750] [Bug #650] Marshal.load raises RegexpError — Shyouhei Urabe <redmine@...>

Bug #650: Marshal.load raises RegexpError

30 messages 2008/10/15
[#36769] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36771] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36772] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36773] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/17

卜部です。

[#36784] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/18

まつもと ゆきひろです

[#36785] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/18

卜部です。

[#36793] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/19

まつもと ゆきひろです

[#36794] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/19

Yukihiro Matsumoto さんは書きました:

[#36823] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36830] Re: [Bug #650] Marshal.load raises RegexpError — Urabe Shyouhei <shyouhei@...> 2008/10/21

もとの正規表現にバグがあるのは認めますが、それに巻き込まれてでかいPStore

[#36833] Re: [Bug #650] Marshal.load raises RegexpError — Yukihiro Matsumoto <matz@...> 2008/10/21

まつもと ゆきひろです

[#36764] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...>

まつもとさん、こんばんは。

11 messages 2008/10/17
[#36767] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Yukihiro Matsumoto <matz@...> 2008/10/17

まつもと ゆきひろです

[#36799] Re: [ruby-cvs:27036] Ruby:r19818 (trunk): * transcode.c (str_transcode0): String#encode without argument now — Martin Duerst <duerst@...> 2008/10/20

まつもとさん、こんにちは。

[#36774] ConverterNotFoundError while making Ruby in Windows(trunk) — Masaki Suketa <masaki.suketa@...>

助田です。

13 messages 2008/10/17
[#36797] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36800] Re: ConverterNotFoundError while making Ruby in Windows(trunk) — "U.Nakamura" <usa@...> 2008/10/20

こんにちは、なかむら(う)です。

[#36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定 — "rubikitch ." <redmine@...>

Bug #660: 数字を3桁ずつコンマで区切るsprintf書式指定

13 messages 2008/10/19

[#37007] [Bug:1.9] 1+1+1+...+1 dumps core — "Yusuke ENDOH" <mame@...>

遠藤です。

13 messages 2008/10/31

[ruby-dev:36824] Re: [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定

From: KIMURA Koichi <kimura.koichi@...>
Date: 2008-10-21 01:44:54 UTC
List: ruby-dev #36824
木村です。

まず現状の sprintf.c に locale に影響されるコードを持ち込むのはわたしも
賛成しません。

区切りの文字どころか、規則も3桁ごとだけではない(わたしが小学生の時分に
初めて学校で習ったときは4桁区切りだったような)ので、POSIXの実装はかなり
複雑になっていると思います。実際、localeconv(3) で取得できる情報で関連
するものをみると、

On-line Manual of "localeconv"

"thousands_sep 通貨値を除いて、小数点の前の桁のグループ間のセパレータ 
(分離記号) です。 grouping 通貨値を除いて、桁のグループのサイズです。
これは、低い 位の桁から高い位の桁 (右から左) までのグループのサイズを
表すそれぞれのサイズ char 整数の配列へのポインタで す。リストは、0 
または CHAR_MAX で終わりかもしれませ ん。リストが 0 で終了する場合、
0 の前の最後のグループ のサイズは、全ての桁を計算するために繰り返されま
す。リ ストが CHAR_MAX で終了する場合、それ以上のグループ化は 実行され
ません。 "

http://www.jp.freebsd.org/cgi/mroff.cgi?sect=3&cmd=&lc=1&subdir=man&dir=jpman-6.0.0%2Fman&subdir=man&man=localeconv

のようになっています。

実際に使われているものとして gawkを挙げておきます。POISIXにしたがって 
"'" を使ったときの区切り記号の挿入が有効です。

区切り記号と挿入位置についてはsetlocale(3) で取得した情報を使うので 
locale 依存です。また、この指定が有効になるのは d、i、o のときのみになっ
ています。

if (quote_flag && loc.grouping[ii] && ++jj == loc.grouping[ii]) {
	if (i)	/* only add if more digits coming */
		PREPEND(loc.thousands_sep[0]);	/* XXX - assumption it's one char */
	if (loc.grouping[ii+1] == 0)
		jj = 0;		/* keep using current val inloc.grouping[ii] */
	else if (loc.grouping[ii+1] == CHAR_MAX)
		quote_flag = FALSE;
	else {
		ii++;
		jj = 0;
	}
}

#builtin.c/format_tree


最悪 locale 依存になるとしても、その情報はシステムから直接得るものでは
なくて(現状では持っていないと思いますが)Rubyスクリプトなりインタプリタ
(の各スレッド?)が持っている情報から得るべきだと思います。

On Tue, 21 Oct 2008 02:17:07 +0900
Yukihiro Matsumoto <matz@ruby-lang.org> wrote:

> まつもと ゆきひろです
> 
> In message "Re: [ruby-dev:36789] [Bug #660] 数字を3桁ずつコンマで区切るsprintf書式指定"
>     on Sun, 19 Oct 2008 09:46:00 +0900, "rubikitch ." <redmine@ruby-lang.org> writes:
> 
> |http://d.hatena.ne.jp/rubikitch/20081016/1224165602
> |
> |1,000,000のように数字を3桁ずつ区切るsprintf書式指定が欲しいです。
> 
> |「%#d」が使用されていないのでこれに割り当てるのが妥当だと思います。
> |区切り文字は国によって異なるらしいのでlocaleに決めさせるのがよいでしょう。
> |ついでに区切り文字指定で「%,」やら「%_」等も用意するといいと思います。
> 
> POSIXでは「%'d」を使うという話がありますし、もう少し具体化し
> てほしいです。少なくとも、私にはここで示された提案が「妥当」
> とは簡単に判断できません。たとえば、他の実装との互換性とか。
> 
> また、printfの実装では他の部分ではかたくなにlocale使用を拒否
> しているのに、ここだけlocaleに従うというのも変な話です。

-- 
木村浩一


In This Thread