[ruby-dev:49638] Re: 重要: 非互換性の可能性 Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8
From:
"NARUSE, Yui" <naruse@...>
Date:
2016-05-31 07:18:03 UTC
List:
ruby-dev #49638
r55225はtest-allがこけていたので一旦revertしました。
再度コミットする場合は以下の潜在的に不具合を引き起こす可能性のあるコードも修正して頂けると助かります。
basictest/test.rb:test_ok("a".upcase![0] == ?A)
benchmark/bm_so_k_nucleotide.rb: puts "%s %.3f" %
[v[0].upcase,((v[1]*100).to_f/n)]
benchmark/bm_so_k_nucleotide.rb: puts "#{table[s].to_s}\t#{s.upcase}"
defs/id.def: token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
ext/date/date_core.c: * ^ upcase the result string.
ext/date/date_core.c: * ^ upcase the result string.
ext/date/date_strftime.c:upcase(char *s, size_t i)
ext/date/date_strftime.c: upcase(s, i); \
ext/date/date_strftime.c: upcase(s, i);
ext/digest/digest_conf.rb: $defs << "-D#{name.upcase}_USE_COMMONDIGEST"
ext/digest/digest_conf.rb: funcs ||= name.upcase
ext/digest/digest_conf.rb: $defs << "-D#{name.upcase}_USE_OPENSSL"
ext/etc/mkconstants.rb:# if defined(HAVE_CONST_<%=name.upcase%>)
ext/openssl/deprecation.rb: have_macro(func, header) &&
$defs.push("-DHAVE_#{func.upcase}")
ext/socket/extconf.rb: have_const(name, headers) unless
$defs.include?("-DHAVE_CONST_#{name.upcase}")
ext/socket/mkconstants.rb:# if defined(HAVE_CONST_<%=name.upcase%>)
ext/syslog/lib/syslog/logger.rb: level = ::Logger.const_get(meth.upcase)
ext/tk/extconf.rb: exts.map!{|ext| [ext.downcase, ext.upcase]}.flatten!
ext/tk/lib/tk/canvas.rb: (itemclass = typename.dup)[0,1] =
typename[0,1].upcase
ext/tk/sample/demos-en/entry3.rb: $phoneNumberMap[c.upcase] = n
ext/tk/sample/demos-jp/entry3.rb: $phoneNumberMap[c.upcase] = n
ext/tk/sample/tkextlib/treectrl/explorer.rb: type = ext.upcase
ext/tk/sample/tkextlib/treectrl/explorer.rb: type = ext.upcase
ext/tk/sample/tkextlib/treectrl/explorer.rb: type = ext.upcase
ext/win32/lib/win32/registry.rb: (e = ENV[v] || ENV[v.upcase];
e.encode(str.encoding) if e) ||
ext/win32ole/sample/olegen.rb: io.print v.name.sub(/^./){$&.upcase}
ext/zlib/extconf.rb: os_code = 'OS_' + os_code.upcase
hash.c: * h["c"].upcase! #=> "GO FISH"
hash.c: * h["c"].upcase! #=> "GO FISH: C"
hash.c: * h.fetch_values("cow", "bird") { |k| k.upcase } #=>
["bovine", "BIRD"]
include/ruby/oniguruma.h:#define ONIGENC_CASE_UP_SPECIAL
(1<<16) /* has special upcase mapping */
lib/cgi/html.rb: s << "</#{element.upcase}>"
lib/cgi/html.rb: s = "<#{element.upcase}"
lib/cgi/html.rb: s << "</#{element.upcase}>"
lib/cgi/util.rb: '%' + m.unpack('H2' * m.bytesize).join('%').upcase
lib/irb/init.rb: prompt_mode = opt.upcase.tr("-", "_").intern
lib/mkmf.rb: strip.upcase.tr_s("^A-Z0-9_*", "_").tr_s("*", "P")
lib/mkmf.rb: conv = (compat == "long long" ? "LL" : compat.upcase)
lib/net/imap.rb: auth_type = auth_type.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: return lang.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: key = token.value.upcase
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: data.push(atom.upcase)
lib/net/imap.rb: name = token.value.upcase
lib/net/imap.rb: return token.value.upcase
lib/open-uri.rb: ftp.voidcmd("TYPE #{typecode.upcase}")
lib/optparse.rb: env = ENV[env] || ENV[env.upcase] or return
lib/rexml/encoding.rb: @encoding = encoding.upcase
lib/rss/parser.rb: tag_name = tag_name.gsub(/[_\-]([a-z]?)/) {$1.upcase}
lib/rss/parser.rb: tag_name[0, 1].upcase + tag_name[1..-1]
lib/rss/utils.rb: "#{part[0, 1].upcase}#{part[1..-1]}"
lib/rubygems.rb: req = ENV["GEM_REQUIREMENT_#{gem_name.upcase}"]
|| '>= 0'.freeze
lib/rubygems/command_manager.rb: const_name =
command_name.capitalize.gsub(/_(.)/) { $1.upcase } << "Command"
lib/rubygems/request.rb: _SCHEME = scheme.upcase
lib/rubygems/request_set/gem_dependency_api.rb: my_engine_version
= Object.const_get "#{Gem.ruby_engine.upcase}_VERSION"
lib/rubygems/resolver.rb: $stderr.printf "%10s %s\n", stage.to_s.upcase, d
lib/rubygems/resolver.rb: $stderr.printf "%10s (%d entries)\n",
stage.to_s.upcase, data.size
lib/rubygems/test_utilities.rb: if URI === path and
"URI::#{path.scheme.upcase}" != path.class.name then
lib/scanf.rb:# str.scanf("%d%s") { |num,str| [ num * 2, str.upcase ] }
lib/time.rb: zone = zone.upcase
lib/time.rb: elsif ((t = self.local(year, 1, 1)).zone.upcase ==
zone rescue false)
lib/time.rb: elsif ((t = self.local(year, 7, 1)).zone.upcase ==
zone rescue false)
lib/time.rb: mon = MonthValue[$2.upcase]
lib/time.rb: self.utc($6.to_i, MonthValue[$1.upcase], $2.to_i,
lib/uri/generic.rb: if k == 'http_proxy' && ENV[k.upcase] == nil
lib/uri/generic.rb: proxy_uri = ENV["CGI_#{name.upcase}"]
lib/uri/generic.rb: if proxy_uri = ENV[name.upcase]
lib/uri/generic.rb: proxy_uri = ENV[name] || ENV[name.upcase]
lib/uri/generic.rb: if no_proxy = ENV[name] || ENV[name.upcase]
lib/uri/rfc2396_parser.rb: if scheme &&
URI.scheme_list.include?(scheme.upcase)
lib/uri/rfc2396_parser.rb:
URI.scheme_list[scheme.upcase].new(scheme, userinfo, host, port,
lib/uri/rfc3986_parser.rb: if scheme && scheme_list.include?(uc =
scheme.upcase)
lib/webrick/httpauth/digestauth.rb: if
auth_req['algorithm'].upcase != @algorithm.upcase
lib/webrick/httprequest.rb: name.upcase!
lib/webrick/httpresponse.rb: tmp =
key.gsub(/\bwww|^te$|\b\w/){ $&.upcase }
lib/webrick/httpstatus.rb: var_name = message.gsub(/[ \-]/,'_').upcase
man/ruby.1:% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
nacl/nacl-config.rb: if NaClConfig::const_defined?(name.upcase)
nacl/nacl-config.rb: NaClConfig::const_get(name.upcase)
sample/openssl/c_rehash.rb: Digest::MD5.hexdigest(der).upcase
sample/openssl/cipher.rb: if i.upcase != i && ciphers.include?(i.upcase)
sample/trick2013/yhara/entry.rb:def _(&b)$><<->(x){x ? (String===x ?x.upcase:
string.c: * str.upcase! -> str or nil
string.c:rb_str_upcase_bang(int argc, VALUE *argv, VALUE str)
string.c: * str.upcase -> new_str
string.c: * "hEllO".upcase #=> "HELLO"
string.c:rb_str_upcase(int argc, VALUE *argv, VALUE str)
string.c: rb_str_upcase_bang(argc, argv, str);
string.c: * sym.upcase [options] -> symbol
string.c: * Same as <code>sym.to_s.upcase.intern</code>.
string.c:sym_upcase(int argc, VALUE *argv, VALUE sym)
string.c: return rb_str_intern(rb_str_upcase(argc, argv, rb_sym2str(sym)));
string.c: rb_define_method(rb_cString, "upcase", rb_str_upcase, -1);
string.c: rb_define_method(rb_cString, "upcase!", rb_str_upcase_bang, -1);
string.c: rb_define_method(rb_cSymbol, "upcase", sym_upcase, -1);
template/encdb.h.tmpl: defs[name.upcase] = [fn,line]
template/encdb.h.tmpl: [fn, $., $2, $1] unless defs[$2.upcase]
template/encdb.h.tmpl: [fn, $., $2, $1] unless defs[$2.upcase]
template/sizes.c.tmpl: strip.upcase.tr_s("^A-Z0-9_*", "_").tr_s("*", "P")
template/unicode_norm_gen.tmpl: "\\u{#{to_s(16).upcase}}"
template/unicode_norm_gen.tmpl: "\\u#{to_s(16).upcase.rjust(4, '0')}"
test/-ext-/num2int/test_num2int.rb: func = "NUM2#{type}".upcase
test/-ext-/num2int/test_num2int.rb: func = "NUM2#{type}".upcase
test/-ext-/num2int/test_num2int.rb: func = "FIX2#{type}".upcase
test/-ext-/num2int/test_num2int.rb: func = "FIX2#{type}".upcase
test/cgi/test_cgi_cookie.rb: assert_equal(['A', 'B', 'C'],
cookie.collect{|e| e.upcase})
test/dbm/test_dbm.rb: assert_equal(k.upcase, v)
test/erb/test_erb.rb: <%- up = w.upcase -%>
test/erb/test_erb.rb: <%- up = w.upcase -%>
test/gdbm/test_gdbm.rb: assert_equal(k.upcase, v)
test/lib/memory_status.rb: Header = members.map {|k|
k.to_s.upcase.rjust(6)}.join('')
test/mkmf/test_convertible.rb: (u = signed[/^u/]) and u.upcase!
test/mkmf/test_convertible.rb: assert_include($defs,
"-DPRI_TEST1T_PREFIX=PRI_#{type.upcase}_PREFIX")
test/mkmf/test_convertible.rb: assert_include($defs,
"-DTEST1T2NUM=#{u}#{type.upcase}2NUM")
test/mkmf/test_convertible.rb: assert_include($defs,
"-DNUM2TEST1T=NUM2#{u}#{type.upcase}")
test/openssl/utils.rb:
OpenSSL::Digest::SHA1.hexdigest(pkvalue).scan(/../).join(":").upcase
test/rdoc/test_rdoc_method_attr.rb: m.block_params = '.to_s +
"</#{element.upcase}>"'
test/rdoc/test_rdoc_parser_ruby.rb: klass =
RDoc::RubyToken.const_get "Tk#{klass.to_s.upcase}"
test/ruby/enc/test_case_comprehensive.rb: upcase = Hash.new { |h, c| c }
test/ruby/enc/test_case_comprehensive.rb: turkic_upcase =
Hash.new { |h, c| upcase[c] }
test/ruby/enc/test_case_comprehensive.rb: ascii_upcase =
Hash.new { |h, c| c =~ /^[a-zA-Z]$/ ? upcase[c] : c }
test/ruby/enc/test_case_comprehensive.rb: upcase[code] = hex2utf8
data[12] unless data[12].empty?
test/ruby/enc/test_case_comprehensive.rb: upcase[code] = hex2utf8 data[3]
test/ruby/enc/test_case_comprehensive.rb: turkic_upcase[code]
= hex2utf8 data[3]
test/ruby/enc/test_case_comprehensive.rb: CaseTest.new(:upcase,
[:lithuanian], upcase),
test/ruby/enc/test_case_comprehensive.rb: CaseTest.new(:upcase,
[:turkic], turkic_upcase),
test/ruby/enc/test_case_comprehensive.rb: CaseTest.new(:upcase,
[:ascii], ascii_upcase),
test/ruby/enc/test_case_mapping.rb: def
check_upcase_properties(expected, start, *flags)
test/ruby/enc/test_case_mapping.rb: assert_equal expected,
start.upcase(*flags)
test/ruby/enc/test_case_mapping.rb: assert_equal expected,
temp.upcase!(*flags) unless expected==temp
test/ruby/enc/test_case_mapping.rb: assert_equal nil,
temp.upcase!(*flags) if expected==temp
test/ruby/enc/test_case_mapping.rb: assert_equal expected,
expected.upcase(*flags)
test/ruby/enc/test_case_mapping.rb: assert_nil temp.upcase!(*flags)
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'YUKIHIRO MATSUMOTO (MATZ)', 'yukihiro matsumoto (matz)', :lithuanian
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'RÉSUMÉ DÜRST ĬÑŦĖŘŊÃŢIJŇŐŃÆŁĨŻÀŤÏŌŅ', 'résumé dürst
ĭñŧėřŋãţijňőńæłĩżàťïōņ', :lithuanian
test/ruby/enc/test_case_mapping.rb: def test_one_way_upcase
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'ΜΜΜΜΜ', 'µµµµµ', :lithuanian # MICRO SIGN -> Greek Mu
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'Μ', 'µ', :lithuanian # MICRO SIGN -> Greek Mu
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'SS', 'ß', :lithuanian
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'ᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩ', "\uab70\uab71\uab72\uab73\uab74\uab75\uab76\uab77\uab78\uab79",
:lithuanian
test/ruby/enc/test_case_mapping.rb: check_upcase_properties 'DZ
DŽ LJ NJ', 'Dz Dž Lj Nj', :lithuanian
test/ruby/enc/test_case_mapping.rb: check_upcase_properties 'DZ
DŽ LJ NJ', 'dz dž lj nj', :lithuanian
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'YUKIHIRO MATSUMOTO (MATZ)', 'yukihiro matsumoto (matz)', :ascii
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'YUKİHİRO MATSUMOTO (MATZ)', 'Yukihiro Matsumoto (matz)', :turkic
test/ruby/enc/test_case_mapping.rb: check_upcase_properties
'ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ', 'αβγδεζηθικλμνξοπρστυφχψω', :lithuanian
test/ruby/enc/test_case_options.rb: assert_raise(ArgumentError) {
arg.upcase(*options) }
test/ruby/enc/test_case_options.rb: assert_raise(ArgumentError) {
arg.upcase!(*options) }
test/ruby/enc/test_case_options.rb: assert_nothing_raised {
arg.upcase(*options) }
test/ruby/enc/test_case_options.rb: assert_nothing_raised {
arg.upcase!(*options) }
test/ruby/enc/test_case_options.rb: assert_raise(ArgumentError) {
'a'.upcase :fold }
test/ruby/enc/test_case_options.rb: assert_raise(ArgumentError) {
'a'.upcase! :fold }
test/ruby/enc/test_case_options.rb: assert_raise(ArgumentError) {
:a.upcase :fold }
test/ruby/enc/test_regex_casefold.rb: string.codepoints.collect {
|cp| cp.to_s(16).upcase.rjust(4, '0') }
test/ruby/test_alias.rb: assert_equal("ABC", x.try(:upcase),
'[ruby-dev:38824]')
test/ruby/test_call.rb: assert_equal("X", o.x&.upcase)
test/ruby/test_call.rb: assert_nil(o.y&.upcase)
test/ruby/test_encoding.rb: assert_equal(e, Encoding.find(e.name.upcase))
test/ruby/test_enum.rb: assert_equal(['A', 'B', 'C', 'D', 'E'],
@obj.map {|x| x.upcase })
test/ruby/test_enum.rb: proc = Proc.new {|x| x.upcase }
test/ruby/test_enum.rb: lambda = ->(x) { x.upcase }
test/ruby/test_enum.rb: @obj.each_with_index.map {|x, i| [x.upcase, i] })
test/ruby/test_enum.rb: proc2 = Proc.new {|x, i| [x.upcase, i] }
test/ruby/test_enum.rb: lambda2 = ->(x, i) { [x.upcase, i] }
test/ruby/test_env.rb: val.succ! while ENV.has_value?(val) ||
ENV.has_value?(val.upcase)
test/ruby/test_env.rb: assert_equal(false, ENV.has_value?(val.upcase))
test/ruby/test_env.rb: assert_equal(false, ENV.has_value?(val.upcase))
test/ruby/test_env.rb: ENV['test'] = val.upcase
test/ruby/test_env.rb: assert_equal(true, ENV.has_value?(val.upcase))
test/ruby/test_env.rb: val.succ! while ENV.has_value?(val) ||
ENV.has_value?(val.upcase)
test/ruby/test_env.rb: assert_nil(ENV.key(val.upcase))
test/ruby/test_env.rb: assert_equal('TEST', ENV.key(val).upcase)
test/ruby/test_env.rb: assert_nil(ENV.key(val.upcase))
test/ruby/test_env.rb: ENV['test'] = val.upcase
test/ruby/test_env.rb: assert_equal('TEST', ENV.key(val.upcase).upcase)
test/ruby/test_env.rb: assert_equal('test', ENV.key(val.upcase))
test/ruby/test_env.rb: ENV.reject! {|k, v| IGNORE_CASE ? k.upcase
== "TEST" : k == "test" }
test/ruby/test_env.rb: assert_nil(ENV.reject! {|k, v| IGNORE_CASE ?
k.upcase == "TEST" : k == "test" })
test/ruby/test_env.rb: ENV.delete_if {|k, v| IGNORE_CASE ? k.upcase
== "TEST" : k == "test" }
test/ruby/test_env.rb: assert_equal(ENV, ENV.delete_if {|k, v|
IGNORE_CASE ? k.upcase == "TEST" : k == "test" })
test/ruby/test_env.rb: ENV.select! {|k, v| IGNORE_CASE ? k.upcase
!= "TEST" : k != "test" }
test/ruby/test_env.rb: assert_nil(ENV.select! {|k, v| IGNORE_CASE ?
k.upcase != "TEST" : k != "test" })
test/ruby/test_env.rb: ENV.keep_if {|k, v| IGNORE_CASE ? k.upcase
!= "TEST" : k != "test" }
test/ruby/test_env.rb: assert_equal(ENV, ENV.keep_if {|k, v|
IGNORE_CASE ? k.upcase != "TEST" : k != "test" })
test/ruby/test_env.rb: h = ENV.select {|k| IGNORE_CASE ? k.upcase
== "TEST" : k == "test" }
test/ruby/test_env.rb: assert_equal("TEST", k.upcase)
test/ruby/test_env.rb: assert_equal("FOO", v.upcase)
test/ruby/test_env.rb: s = s.upcase
test/ruby/test_env.rb: a = a.map {|x| x.map {|y| y.upcase } }
test/ruby/test_env.rb: assert_equal("TEST", k.upcase)
test/ruby/test_env.rb: assert_equal("FOO", v.upcase)
test/ruby/test_env.rb: assert_equal("TEST", k.upcase)
test/ruby/test_env.rb: assert_equal("FOO", v.upcase)
test/ruby/test_env.rb: h2 = ENV.reject {|k, v| IGNORE_CASE ?
k.upcase == "TEST" : k == "test" }
test/ruby/test_env.rb: as = as.map {|xs| xs.map {|x| x.upcase } }
test/ruby/test_env.rb: bs = bs.map {|xs| xs.map {|x| x.upcase } }
test/ruby/test_hash.rb: res = @h.fetch_values(3, 'invalid') { |k| k.upcase }
test/ruby/test_hash.rb: super.upcase
test/ruby/test_lazy_enumerator.rb: assert_equal('C', a.grep(/c/)
{|i| i.upcase}.first)
test/ruby/test_lazy_enumerator.rb: assert_equal('C',
a.lazy.grep(/c/) {|i| i.upcase}.first)
test/ruby/test_lazy_enumerator.rb: assert_equal('B', a.grep_v(/a/)
{|i| i.upcase}.first)
test/ruby/test_lazy_enumerator.rb: assert_equal('B',
a.lazy.grep_v(/a/) {|i| i.upcase}.first)
test/ruby/test_m17n_comb.rb: r = enccall(r, :sub, /\A[a-z]/)
{|ch| b(ch).upcase }
test/ruby/test_m17n_comb.rb: assert_equal(s1.upcase <=> s2.upcase, r)
test/ruby/test_m17n_comb.rb: def test_str_upcase
test/ruby/test_m17n_comb.rb: desc = "#{encdump s}.upcase"
test/ruby/test_m17n_comb.rb: assert_raise(ArgumentError, desc)
{ s.upcase }
test/ruby/test_m17n_comb.rb: t1 = s.upcase
test/ruby/test_m17n_comb.rb: t2.upcase!
test/ruby/test_marshal.rb: assert_equal(['X', 'X'],
Marshal.load(Marshal.dump(obj), ->(v) { v == str ? v.upcase : v }))
test/ruby/test_method.rb: assert_nothing_raised {
RubyVM::InstructionSequence.disasm("x".method(:upcase)) }
test/ruby/test_process.rb: cmd << '-e' << 'puts ENV.keys.map{|e|e.upcase}'
test/ruby/test_refinement.rb: def upcase
test/ruby/test_refinement.rb: puts "hello world".upcase
test/ruby/test_refinement.rb: puts eval(%{using M; "hello world".upcase})
test/ruby/test_refinement.rb: puts "hello world".upcase
test/ruby/test_refinement.rb: def upcase
test/ruby/test_refinement.rb: puts "hello world".upcase
test/ruby/test_refinement.rb: puts eval(%{using M; "hello
world".upcase}, b)
test/ruby/test_refinement.rb: puts eval(%{"hello world".upcase}, b)
test/ruby/test_sprintf_comb.rb: 16.times {|i| digitmap[i] =
i.to_s(16).upcase }
test/ruby/test_string.rb: S("hello").gsub(/(hell)(.)/)
{ |s| $1.upcase + S('-') + $2 })
test/ruby/test_string.rb: a.gsub!(/(hell)(.)/) { |s| $1.upcase +
S('-') + $2 }
test/ruby/test_string.rb: assert_equal('aBc', 'abc'.sub(/b/,
Hash.new {|h, k| k.upcase }))
test/ruby/test_string.rb: assert_equal('aBcabc', 'abcabc'.sub(/b/,
Hash.new {|h, k| h[k] = k.upcase }))
test/ruby/test_string.rb: assert_equal('aBc', 'abc'.gsub(/b/,
Hash.new {|h, k| k.upcase }))
test/ruby/test_string.rb: assert_equal('aBcaBc', 'abcabc'.gsub(/b/,
Hash.new {|h, k| h[k] = k.upcase }))
test/ruby/test_string.rb: |s| $1.upcase + S('-') + $2
test/ruby/test_string.rb: a.sub!(/(hell)(.)/) { |s| $1.upcase + S('-') + $2 }
test/ruby/test_string.rb: def test_upcase
test/ruby/test_string.rb: assert_equal(S("HELLO"), S("hello").upcase)
test/ruby/test_string.rb: assert_equal(S("HELLO"), S("hello").upcase)
test/ruby/test_string.rb: assert_equal(S("HELLO"), S("HELLO").upcase)
test/ruby/test_string.rb: assert_equal(S("ABC HELLO 123"), S("abc
HELLO 123").upcase)
test/ruby/test_string.rb: def test_upcase!
test/ruby/test_string.rb: assert_equal(S("HELLO"), a.upcase!)
test/ruby/test_string.rb: assert_nil(a.upcase!)
test/ruby/test_string.rb: def test_upcase2
test/ruby/test_string.rb: assert_equal("\u3042AB", "\u3042aB".upcase)
test/ruby/test_stringchar.rb: assert_equal(?A, "a".upcase![0])
test/ruby/test_stringchar.rb: s.upcase
test/ruby/test_stringchar.rb: s.upcase!
test/ruby/test_symbol.rb: assert_equal(:FOO, :FoO.upcase)
test/rubygems/test_gem_installer.rb: bin_dir = Gem.win_platform? ?
File.expand_path(ENV["WINDIR"]).upcase :
test/rubygems/test_gem_request_set_gem_dependency_api.rb:
engine_version_const = "#{Gem.ruby_engine.upcase}_VERSION"
test/rubygems/test_gem_request_set_gem_dependency_api.rb:
new_engine_version_const = "#{name.upcase}_VERSION"
test/rubygems/test_gem_request_set_gem_dependency_api.rb:
engine_version_const = "#{Gem.ruby_engine.upcase}_VERSION"
test/scanf/test_scanfblocks.rb: names = @str.scanf("%s%d") { |name,
year| name.upcase }
test/sdbm/test_sdbm.rb: assert_equal(k.upcase, v)
test/test_delegate.rb: m = s.method("upcase")
test/test_set.rb: i.upcase
test/test_set.rb: i.upcase
test/test_unicode_normalize.rb: string.codepoints.collect { |cp|
cp.to_s(16).upcase.rjust(4, '0') }
test/uri/test_generic.rb: h["CGI_#{name.upcase}"] ||= nil
time.c: * ^ upcase the result string
tool/extlibs.rb: hd = Digest(name.upcase).file(cache).hexdigest
tool/gen_dummy_probes.rb: name.upcase!
tool/instruction.rb: "
SCS_#{InstructionsLoader.complement_name(insn.nextsc).upcase}" +
tool/transcode-tblgen.rb: hex = $1.upcase
tool/transcode-tblgen.rb: pat = pat.upcase
tool/transcode-tblgen.rb: gen_str(info.upcase)
tool/transcode-tblgen.rb: k = [k].pack("U").unpack("H*")[0].upcase
if Integer === k
tool/transcode-tblgen.rb: v = [v].pack("U").unpack("H*")[0].upcase
if Integer === v
2016年5月31日 10:37 Martin J. Dürst <duerst@it.aoyama.ac.jp>:
> 下記の通り、大文字小文字変換を UTF-8 において ASCII だけからユニコード全体に変換しました。これにより、一部非互換性が出る可能性があります。
>
> 一例で見せますと、r55224 までは次の通り:
>
> 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase
> # -> 'RéSUMé ĭñŧėřŋãţijňőńæłĩżàťïōņ'
>
> それに対して、 r55225 以降は次の通り:
>
> 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase
> # -> 'RÉSUMÉ ĬÑŦĖŘŊÃŢIJŇŐŃÆŁĨŻÀŤÏŌŅ'
>
> 一般の場合、後者が好ましいので、まつもとさんがわざわざそのように提案しました(https://bugs.ruby-lang.org/issues/10085#note-5
> 参照).
>
> しかし、例外があります。例えば DNS のサーバの場合です。その場合、今まで通り ASCII のみ変換を行いたいでしょう
> (https://bugs.ruby-lang.org/issues/10085#note-9 参照). これは次のようにできます:
>
> 'résumé ĭñŧėřŋãţijňőńæłĩżàťïōņ'.upcase(:ascii)
> # -> 'RéSUMé ĭñŧėřŋãţijňőńæłĩżàťïōņ'
>
> 必ず ASCII のみの変換が必要な場合、上記のように :ascii オプションを使ってください。 (扱うデータが既に全て ASCII
> の場合、オプションを付ける必要はありません。)
>
> オプションについての詳しい説明は String#downcase の説明にありますが、全ての大文字小文字変換のメソッド
> (upcase/downcase/capitalize/swapcase) に共通です。
>
> UTF-8 以外の文字コードのための実装はこれから追加されます。
>
> よろしくお願いします。 Martin.
>
>
> -------- Forwarded Message --------
> Subject: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full
> Unicode case mapping for UTF-8 by removing
> Date: Tue, 31 May 2016 01:10:07 +0000
> From: duerst@ruby-lang.org
> To: ruby-cvs@ruby-lang.org
>
> duerst 2016-05-31 10:10:06 +0900 (Tue, 31 May 2016)
>
> New Revision: 55225
>
> https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=55225
>
> Log:
> * string.c: Activate full Unicode case mapping for UTF-8 by removing
> the protective check for the presence of an option.
> Update documentation.
> * test/ruby/enc/test_case_comprehensive.rb: Adjust tests for above
> change.
>
> Modified files:
> trunk/ChangeLog
> trunk/string.c
> trunk/test/ruby/enc/test_case_comprehensive.rb
> .
>
--
NARUSE, Yui <naruse@airemix.jp>