Project

General

Profile

Actions

Bug #787

closed

Time#strftime で %i は "%i" になるのに、%[EO-_] などは "%" に置換される

Added by tadf (tadayoshi funaba) over 15 years ago. Updated about 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:

Description

=begin
$ ./ruby -e "p Time.now.strftime('%i')"
"%i"

$ ./ruby -e "p Time.now.strftime('%E')"
"%"

$ ./ruby -e "p Time.now.strftime('%-')"
"%"

一般には、まったく置換されないか、存在しないパターンでは "" に置き
換えられることが多いように思います。
=end

Actions #1

Updated by matz (Yukihiro Matsumoto) over 15 years ago

=begin
まつもと ゆきひろです

In message "Re: [ruby-dev:37170] [Bug #787] Time#strftime で %i は "%i" になるのに、%[EO-] などは "%" に置換される"
on Tue, 25 Nov 2008 00:24:38 +0900, tadayoshi funaba writes:
|
|Bug #787: Time#strftime で %i は "%i" になるのに、%[EO-
] などは "%" に置換される
|http://redmine.ruby-lang.org/issues/show/787

%Eおよび%OはSingle Unix Specificationで修飾子として定義され
ています。ですから、%Ecとかのように使われることを期待されて
いるので、%Eで文字列が終わってしまった場合にどうなるかは、未
定義だと思います。あと、%-は%_などと同様にフラグとして用いら
れます。

ですから、これらの文字は未定義のフォーマット指定子である%iと
は同等ではないということですね。

で、これらの修飾子が不完全なまま文字列の終端が来た場合、どう
するべきなのかは議論の余地があると思います。

=end

Actions #2

Updated by tadf (tadayoshi funaba) over 15 years ago

=begin

で、これらの修飾子が不完全なまま文字列の終端が来た場合、どう
するべきなのかは議論の余地があると思います。

%i をそのまま返したり、%- が % に置換される意味はなんなのか、ということ
が気になります。

たとえば、glibc では、パターンに一致しないものはそのまま保存という方針
があったと思います。これは、エンコーディングがらみの問題になるべく中立
的に振る舞おうとするからですが、もし、そういうことに拘らないのであれば、
いっそそういったものは全部 "" に置き換えてもいいと思います。

これが重要な問題というわけではありませんが、食べるなら食べる、食べない
なら食べない、というようにしたほうがいいように思います、可能ならば。
未定義指定子があえて "%" を生成する意味はないように思うので。

%i => "%i"
%E => "%"
%Ei => "%Ei"
%10Ei => " %10Ei"

現状はこんな感じですね。

=end

Actions #3

Updated by matz (Yukihiro Matsumoto) over 15 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r20355.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0