1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/date/format.rb (_parse): m17n compliant.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tadf 2008-12-16 11:25:13 +00:00
parent 56709edc89
commit 3ea21e47c1
2 changed files with 44 additions and 40 deletions

View file

@ -1,3 +1,7 @@
Tue Dec 16 20:24:20 2008 Tadayoshi Funaba <tadf@dotrb.org>
* lib/date/format.rb (_parse): m17n compliant.
Tue Dec 16 19:48:18 2008 Tanaka Akira <akr@fsij.org> Tue Dec 16 19:48:18 2008 Tanaka Akira <akr@fsij.org>
* ext/pty/extconf.rb: check posix_openpt. * ext/pty/extconf.rb: check posix_openpt.

View file

@ -669,11 +669,11 @@ class Date
private_class_method :s3e private_class_method :s3e
def self._parse_day(str, e) # :nodoc: def self._parse_day(str, e) # :nodoc:
if str.sub!(/\b(#{Format::ABBR_DAYS.keys.join('|')})[^-\d\s]*/ino, ' ') if str.sub!(/\b(#{Format::ABBR_DAYS.keys.join('|')})[^-\d\s]*/io, ' ')
e.wday = Format::ABBR_DAYS[$1.downcase] e.wday = Format::ABBR_DAYS[$1.downcase]
true true
=begin =begin
elsif str.sub!(/\b(?!\dth)(su|mo|tu|we|th|fr|sa)\b/in, ' ') elsif str.sub!(/\b(?!\dth)(su|mo|tu|we|th|fr|sa)\b/i, ' ')
e.wday = %w(su mo tu we th fr sa).index($1.downcase) e.wday = %w(su mo tu we th fr sa).index($1.downcase)
true true
=end =end
@ -708,7 +708,7 @@ class Date
[[:alpha:]]+(?:\sdst)?\b [[:alpha:]]+(?:\sdst)?\b
) )
)? )?
/inx, /ix,
' ') ' ')
t = $1 t = $1
@ -720,7 +720,7 @@ class Date
\s*:?\s*(\d+)(?:[,.](\d+))?s? \s*:?\s*(\d+)(?:[,.](\d+))?s?
)? )?
)? )?
(?:\s*([ap])(?:m\b|\.m\.))?/inx (?:\s*([ap])(?:m\b|\.m\.))?/ix
e.hour = $1.to_i e.hour = $1.to_i
e.min = $2.to_i if $2 e.min = $2.to_i if $2
@ -765,7 +765,7 @@ class Date
\s* \s*
('?-?\d+(?:(?:st|nd|rd|th)\b)?) ('?-?\d+(?:(?:st|nd|rd|th)\b)?)
)? )?
/inox, /iox,
' ') # ' ' ') # '
s3e(e, $4, Format::ABBR_MONTHS[$2.downcase], $1, s3e(e, $4, Format::ABBR_MONTHS[$2.downcase], $1,
$3 && $3[0,1].downcase == 'b') $3 && $3[0,1].downcase == 'b')
@ -784,7 +784,7 @@ class Date
\s* \s*
('?-?\d+) ('?-?\d+)
)? )?
/inox, /iox,
' ') # ' ' ') # '
s3e(e, $4, Format::ABBR_MONTHS[$1.downcase], $2, s3e(e, $4, Format::ABBR_MONTHS[$1.downcase], $2,
$3 && $3[0,1].downcase == 'b') $3 && $3[0,1].downcase == 'b')
@ -793,43 +793,43 @@ class Date
end end
def self._parse_iso(str, e) # :nodoc: def self._parse_iso(str, e) # :nodoc:
if str.sub!(/('?[-+]?\d+)-(\d+)-('?-?\d+)/n, ' ') if str.sub!(/('?[-+]?\d+)-(\d+)-('?-?\d+)/, ' ')
s3e(e, $1, $2, $3) s3e(e, $1, $2, $3)
true true
end end
end end
def self._parse_iso2(str, e) # :nodoc: def self._parse_iso2(str, e) # :nodoc:
if str.sub!(/\b(\d{2}|\d{4})?-?w(\d{2})(?:-?(\d))?\b/in, ' ') if str.sub!(/\b(\d{2}|\d{4})?-?w(\d{2})(?:-?(\d))?\b/i, ' ')
e.cwyear = $1.to_i if $1 e.cwyear = $1.to_i if $1
e.cweek = $2.to_i e.cweek = $2.to_i
e.cwday = $3.to_i if $3 e.cwday = $3.to_i if $3
true true
elsif str.sub!(/-w-(\d)\b/in, ' ') elsif str.sub!(/-w-(\d)\b/i, ' ')
e.cwday = $1.to_i e.cwday = $1.to_i
true true
elsif str.sub!(/--(\d{2})?-(\d{2})\b/n, ' ') elsif str.sub!(/--(\d{2})?-(\d{2})\b/, ' ')
e.mon = $1.to_i if $1 e.mon = $1.to_i if $1
e.mday = $2.to_i e.mday = $2.to_i
true true
elsif str.sub!(/--(\d{2})(\d{2})?\b/n, ' ') elsif str.sub!(/--(\d{2})(\d{2})?\b/, ' ')
e.mon = $1.to_i e.mon = $1.to_i
e.mday = $2.to_i if $2 e.mday = $2.to_i if $2
true true
elsif /[,.](\d{2}|\d{4})-\d{3}\b/n !~ str && elsif /[,.](\d{2}|\d{4})-\d{3}\b/ !~ str &&
str.sub!(/\b(\d{2}|\d{4})-(\d{3})\b/n, ' ') str.sub!(/\b(\d{2}|\d{4})-(\d{3})\b/, ' ')
e.year = $1.to_i e.year = $1.to_i
e.yday = $2.to_i e.yday = $2.to_i
true true
elsif /\d-\d{3}\b/n !~ str && elsif /\d-\d{3}\b/ !~ str &&
str.sub!(/\b-(\d{3})\b/n, ' ') str.sub!(/\b-(\d{3})\b/, ' ')
e.yday = $1.to_i e.yday = $1.to_i
true true
end end
end end
def self._parse_jis(str, e) # :nodoc: def self._parse_jis(str, e) # :nodoc:
if str.sub!(/\b([mtsh])(\d+)\.(\d+)\.(\d+)/in, ' ') if str.sub!(/\b([mtsh])(\d+)\.(\d+)\.(\d+)/i, ' ')
era = { 'm'=>1867, era = { 'm'=>1867,
't'=>1911, 't'=>1911,
's'=>1925, 's'=>1925,
@ -844,46 +844,46 @@ class Date
def self._parse_vms(str, e) # :nodoc: def self._parse_vms(str, e) # :nodoc:
if str.sub!(/('?-?\d+)-(#{Format::ABBR_MONTHS.keys.join('|')})[^-]* if str.sub!(/('?-?\d+)-(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-('?-?\d+)/inox, ' ') -('?-?\d+)/iox, ' ')
s3e(e, $3, Format::ABBR_MONTHS[$2.downcase], $1) s3e(e, $3, Format::ABBR_MONTHS[$2.downcase], $1)
true true
elsif str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-]* elsif str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})[^-]*
-('?-?\d+)(?:-('?-?\d+))?/inox, ' ') -('?-?\d+)(?:-('?-?\d+))?/iox, ' ')
s3e(e, $3, Format::ABBR_MONTHS[$1.downcase], $2) s3e(e, $3, Format::ABBR_MONTHS[$1.downcase], $2)
true true
end end
end end
def self._parse_sla(str, e) # :nodoc: def self._parse_sla(str, e) # :nodoc:
if str.sub!(%r|('?-?\d+)/\s*('?\d+)(?:\D\s*('?-?\d+))?|n, ' ') # ' if str.sub!(%r|('?-?\d+)/\s*('?\d+)(?:\D\s*('?-?\d+))?|, ' ') # '
s3e(e, $1, $2, $3) s3e(e, $1, $2, $3)
true true
end end
end end
def self._parse_dot(str, e) # :nodoc: def self._parse_dot(str, e) # :nodoc:
if str.sub!(%r|('?-?\d+)\.\s*('?\d+)\.\s*('?-?\d+)|n, ' ') # ' if str.sub!(%r|('?-?\d+)\.\s*('?\d+)\.\s*('?-?\d+)|, ' ') # '
s3e(e, $1, $2, $3) s3e(e, $1, $2, $3)
true true
end end
end end
def self._parse_year(str, e) # :nodoc: def self._parse_year(str, e) # :nodoc:
if str.sub!(/'(\d+)\b/n, ' ') if str.sub!(/'(\d+)\b/, ' ')
e.year = $1.to_i e.year = $1.to_i
true true
end end
end end
def self._parse_mon(str, e) # :nodoc: def self._parse_mon(str, e) # :nodoc:
if str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})\S*/ino, ' ') if str.sub!(/\b(#{Format::ABBR_MONTHS.keys.join('|')})\S*/io, ' ')
e.mon = Format::ABBR_MONTHS[$1.downcase] e.mon = Format::ABBR_MONTHS[$1.downcase]
true true
end end
end end
def self._parse_mday(str, e) # :nodoc: def self._parse_mday(str, e) # :nodoc:
if str.sub!(/(\d+)(st|nd|rd|th)\b/in, ' ') if str.sub!(/(\d+)(st|nd|rd|th)\b/i, ' ')
e.mday = $1.to_i e.mday = $1.to_i
true true
end end
@ -908,7 +908,7 @@ class Date
\[[-+]?\d[^\]]*\] \[[-+]?\d[^\]]*\]
) )
)? )?
/inx, /ix,
' ') ' ')
case $2.size case $2.size
when 2 when 2
@ -1034,7 +1034,7 @@ class Date
e._comp = comp e._comp = comp
str.gsub!(/[^-+',.\/:@[:alnum:]\[\]\x80-\xff]+/n, ' ') str.gsub!(/[^-+',.\/:@[:alnum:]\[\]]+/, ' ')
_parse_time(str, e) # || _parse_beat(str, e) _parse_time(str, e) # || _parse_beat(str, e)
_parse_day(str, e) _parse_day(str, e)
@ -1052,13 +1052,13 @@ class Date
_parse_mday(str, e) || _parse_mday(str, e) ||
_parse_ddd(str, e) _parse_ddd(str, e)
if str.sub!(/\b(bc\b|bce\b|b\.c\.|b\.c\.e\.)/in, ' ') if str.sub!(/\b(bc\b|bce\b|b\.c\.|b\.c\.e\.)/i, ' ')
if e.year if e.year
e.year = -e.year + 1 e.year = -e.year + 1
end end
end end
if str.sub!(/\A\s*(\d{1,2})\s*\z/n, ' ') if str.sub!(/\A\s*(\d{1,2})\s*\z/, ' ')
if e.hour && !e.mday if e.hour && !e.mday
v = $1.to_i v = $1.to_i
if (1..31) === v if (1..31) === v
@ -1100,20 +1100,20 @@ class Date
-w-\d) -w-\d)
(t (t
\d{2}:\d{2}(:\d{2}([,.]\d+)?)? \d{2}:\d{2}(:\d{2}([,.]\d+)?)?
(z|[-+]\d{2}(:?\d{2})?)?)?\s*\z/inx =~ str (z|[-+]\d{2}(:?\d{2})?)?)?\s*\z/ix =~ str
_parse(str) _parse(str)
elsif /\A\s*(([-+]?(\d{2}|\d{4})|--)\d{2}\d{2}| elsif /\A\s*(([-+]?(\d{2}|\d{4})|--)\d{2}\d{2}|
([-+]?(\d{2}|\d{4}))?\d{3}|-\d{3}| ([-+]?(\d{2}|\d{4}))?\d{3}|-\d{3}|
(\d{2}|\d{4})?w\d{2}\d) (\d{2}|\d{4})?w\d{2}\d)
(t? (t?
\d{2}\d{2}(\d{2}([,.]\d+)?)? \d{2}\d{2}(\d{2}([,.]\d+)?)?
(z|[-+]\d{2}(\d{2})?)?)?\s*\z/inx =~ str (z|[-+]\d{2}(\d{2})?)?)?\s*\z/ix =~ str
_parse(str) _parse(str)
elsif /\A\s*(\d{2}:\d{2}(:\d{2}([,.]\d+)?)? elsif /\A\s*(\d{2}:\d{2}(:\d{2}([,.]\d+)?)?
(z|[-+]\d{2}(:?\d{2})?)?)?\s*\z/inx =~ str (z|[-+]\d{2}(:?\d{2})?)?)?\s*\z/ix =~ str
_parse(str) _parse(str)
elsif /\A\s*(\d{2}\d{2}(\d{2}([,.]\d+)?)? elsif /\A\s*(\d{2}\d{2}(\d{2}([,.]\d+)?)?
(z|[-+]\d{2}(\d{2})?)?)?\s*\z/inx =~ str (z|[-+]\d{2}(\d{2})?)?)?\s*\z/ix =~ str
_parse(str) _parse(str)
end end
end end
@ -1122,7 +1122,7 @@ class Date
if /\A\s*-?\d{4}-\d{2}-\d{2} # allow minus, anyway if /\A\s*-?\d{4}-\d{2}-\d{2} # allow minus, anyway
(t|\s) (t|\s)
\d{2}:\d{2}:\d{2}(\.\d+)? \d{2}:\d{2}:\d{2}(\.\d+)?
(z|[-+]\d{2}:\d{2})\s*\z/inx =~ str (z|[-+]\d{2}:\d{2})\s*\z/ix =~ str
_parse(str) _parse(str)
end end
end end
@ -1131,7 +1131,7 @@ class Date
if /\A\s*(-?\d{4,})(?:-(\d{2})(?:-(\d{2}))?)? if /\A\s*(-?\d{4,})(?:-(\d{2})(?:-(\d{2}))?)?
(?:t (?:t
(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)? (\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?)?
(z|[-+]\d{2}:\d{2})?\s*\z/inx =~ str (z|[-+]\d{2}:\d{2})?\s*\z/ix =~ str
e = Format::Bag.new e = Format::Bag.new
e.year = $1.to_i e.year = $1.to_i
e.mon = $2.to_i if $2 e.mon = $2.to_i if $2
@ -1146,7 +1146,7 @@ class Date
end end
e.to_hash e.to_hash
elsif /\A\s*(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))? elsif /\A\s*(\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?
(z|[-+]\d{2}:\d{2})?\s*\z/inx =~ str (z|[-+]\d{2}:\d{2})?\s*\z/ix =~ str
e = Format::Bag.new e = Format::Bag.new
e.hour = $1.to_i if $1 e.hour = $1.to_i if $1
e.min = $2.to_i if $2 e.min = $2.to_i if $2
@ -1158,7 +1158,7 @@ class Date
end end
e.to_hash e.to_hash
elsif /\A\s*(?:--(\d{2})(?:-(\d{2}))?|---(\d{2})) elsif /\A\s*(?:--(\d{2})(?:-(\d{2}))?|---(\d{2}))
(z|[-+]\d{2}:\d{2})?\s*\z/inx =~ str (z|[-+]\d{2}:\d{2})?\s*\z/ix =~ str
e = Format::Bag.new e = Format::Bag.new
e.mon = $1.to_i if $1 e.mon = $1.to_i if $1
e.mday = $2.to_i if $2 e.mday = $2.to_i if $2
@ -1177,7 +1177,7 @@ class Date
(?:#{Format::ABBR_MONTHS.keys.join('|')})\s+ (?:#{Format::ABBR_MONTHS.keys.join('|')})\s+
-?(\d{2,})\s+ # allow minus, anyway -?(\d{2,})\s+ # allow minus, anyway
\d{2}:\d{2}(:\d{2})?\s* \d{2}:\d{2}(:\d{2})?\s*
(?:[-+]\d{4}|ut|gmt|e[sd]t|c[sd]t|m[sd]t|p[sd]t|[a-ik-z])\s*\z/inox =~ str (?:[-+]\d{4}|ut|gmt|e[sd]t|c[sd]t|m[sd]t|p[sd]t|[a-ik-z])\s*\z/iox =~ str
e = _parse(str, false) e = _parse(str, false)
if $1.size < 4 if $1.size < 4
if e[:year] < 50 if e[:year] < 50
@ -1198,20 +1198,20 @@ class Date
(#{Format::ABBR_MONTHS.keys.join('|')})\s+ (#{Format::ABBR_MONTHS.keys.join('|')})\s+
-?\d{4}\s+ # allow minus, anyway -?\d{4}\s+ # allow minus, anyway
\d{2}:\d{2}:\d{2}\s+ \d{2}:\d{2}:\d{2}\s+
gmt\s*\z/inox =~ str gmt\s*\z/iox =~ str
_rfc2822(str) _rfc2822(str)
elsif /\A\s*(#{Format::DAYS.keys.join('|')})\s*,\s+ elsif /\A\s*(#{Format::DAYS.keys.join('|')})\s*,\s+
\d{2}\s*-\s* \d{2}\s*-\s*
(#{Format::ABBR_MONTHS.keys.join('|')})\s*-\s* (#{Format::ABBR_MONTHS.keys.join('|')})\s*-\s*
\d{2}\s+ \d{2}\s+
\d{2}:\d{2}:\d{2}\s+ \d{2}:\d{2}:\d{2}\s+
gmt\s*\z/inox =~ str gmt\s*\z/iox =~ str
_parse(str) _parse(str)
elsif /\A\s*(#{Format::ABBR_DAYS.keys.join('|')})\s+ elsif /\A\s*(#{Format::ABBR_DAYS.keys.join('|')})\s+
(#{Format::ABBR_MONTHS.keys.join('|')})\s+ (#{Format::ABBR_MONTHS.keys.join('|')})\s+
\d{1,2}\s+ \d{1,2}\s+
\d{2}:\d{2}:\d{2}\s+ \d{2}:\d{2}:\d{2}\s+
\d{4}\s*\z/inox =~ str \d{4}\s*\z/iox =~ str
_parse(str) _parse(str)
end end
end end
@ -1220,7 +1220,7 @@ class Date
if /\A\s*[mtsh]?\d{2}\.\d{2}\.\d{2} if /\A\s*[mtsh]?\d{2}\.\d{2}\.\d{2}
(t (t
(\d{2}:\d{2}(:\d{2}([,.]\d*)?)? (\d{2}:\d{2}(:\d{2}([,.]\d*)?)?
(z|[-+]\d{2}(:?\d{2})?)?)?)?\s*\z/inx =~ str (z|[-+]\d{2}(:?\d{2})?)?)?)?\s*\z/ix =~ str
if /\A\s*\d/ =~ str if /\A\s*\d/ =~ str
_parse(str.sub(/\A\s*(\d)/, 'h\1')) _parse(str.sub(/\A\s*(\d)/, 'h\1'))
else else