aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-31 02:56:09 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-31 02:56:09 +0000
commit09574affe5e3e8535631834a105292f90d0eb539 (patch)
tree193724b5464e001b9d524e63361e4d4b2d549cca
parent53733dd7239baa555b10f1c686a745885afaa193 (diff)
downloadruby-09574affe5e3e8535631834a105292f90d0eb539.tar.gz
Revert r55225
Run test-all before large commit: "* string.c: Activate full Unicode case mapping for UTF-8 by removing" This reverts commit 3fb0fcd1e881c1f6dd74db73a64e8623208acb77. http://rubyci.s3.amazonaws.com/centos5-64/ruby-trunk/log/20160531T013303Z.fail.html.gz git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--string.c36
-rw-r--r--test/ruby/enc/test_case_comprehensive.rb8
3 files changed, 21 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index 65befc1637..44dd365286 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,3 @@
-Tue May 31 10:10:03 2016 Martin Duerst <duerst@it.aoyama.ac.jp>
-
- * 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.
-
Tue May 31 00:30:11 2016 NAKAMURA Usaku <usa@ruby-lang.org>
* ext/socket/raddrinfo.c (host_str, port_str): Use StringValueCStr
diff --git a/string.c b/string.c
index cf8f6e876a..1fe74290c7 100644
--- a/string.c
+++ b/string.c
@@ -5850,7 +5850,7 @@ rb_str_upcase_bang(int argc, VALUE *argv, VALUE str)
enc = STR_ENC_GET(str);
rb_str_check_dummy_enc(enc);
s = RSTRING_PTR(str); send = RSTRING_END(str);
- if (enc==rb_utf8_encoding()) {
+ if (enc==rb_utf8_encoding() && argc>0) { /* :lithuanian can temporarily be used for new functionality without options */
str_shared_replace(str, rb_str_casemap(str, &flags, enc));
modify = ONIGENC_CASE_MODIFIED & flags;
}
@@ -5940,7 +5940,7 @@ rb_str_downcase_bang(int argc, VALUE *argv, VALUE str)
enc = STR_ENC_GET(str);
rb_str_check_dummy_enc(enc);
s = RSTRING_PTR(str); send = RSTRING_END(str);
- if (enc==rb_utf8_encoding()) {
+ if (enc==rb_utf8_encoding() && argc>0) { /* :lithuanian can temporarily be used for new functionality without options */
str_shared_replace(str, rb_str_casemap(str, &flags, enc));
modify = ONIGENC_CASE_MODIFIED & flags;
}
@@ -5999,11 +5999,11 @@ rb_str_downcase_bang(int argc, VALUE *argv, VALUE str)
* The meaning of the +options+ is as follows:
*
* No option ::
- * Full Unicode case mapping, suitable for most languages
- * (see :turkic and :lithuanian options below for exceptions)
+ * Currently, old behavior (only the ASCII region, i.e. characters
+ * ``A'' to ``Z'', and/or ``a'' to ``z'', are affected).
+ * This will change very soon to full Unicode case mapping.
* :ascii ::
- * Only the ASCII region, i.e. the characters ``A'' to ``Z'' and
- * ``a'' to ``z'', are affected.
+ * Only the ASCII region, i.e. the characters ``A'' to ``Z'', are affected.
* This option cannot be combined with any other option.
* :turkic ::
* Full Unicode case mapping, adapted for Turkic languages
@@ -6012,23 +6012,21 @@ rb_str_downcase_bang(int argc, VALUE *argv, VALUE str)
* :lithuanian ::
* Currently, just full Unicode case mapping. In the future, full Unicode
* case mapping adapted for Lithuanian (keeping the dot on the lower case
- * i even if there is an accent on top).
+ * i even if there's an accent on top).
* :fold ::
- * Only available on +downcase+ and +downcase!+. Unicode case <b>folding</b>,
- * which is more far-reaching than Unicode case mapping.
- * This option currently cannot be combined with any other option
- * (i.e. we do not currenty implement a variant for turkic languages).
+ * Only available on +downcase+ and +downcase!+. Unicode case folding, which
+ * is more far-reaching than Unicode case mapping. This option currently
+ * cannot be combined with any other option (i.e. we do not currenty
+ * implement a variant for turkic languages).
*
* Please note that several assumptions that are valid for ASCII-only case
* conversions do not hold for more general case conversions. For example,
* the length of the result may not be the same as the length of the input
- * (neither in characters nor in bytes), some roundtrip assumptions
- * (e.g. str.downcase == str.upcase.downcase) may not apply, and Unicode
- * normalization (i.e. String#unicode_normalize) is not necessarily maintained
- * by case mapping operations.
+ * (neither in characters nor in bytes), and some roundtrip assumptions
+ * (e.g. str.downcase == str.downcase.upcase.downcase) may not apply.
*
- * Non-ASCII case mapping/folding is currently only supported for UTF-8
- * Strings/Symbols, but this support will be extended to other encodings.
+ * Non-ASCII case mapping/folding is currently only supported for UTF-8 Strings,
+ * but this support will be extended to other encodings in the future.
*
* "hEllO".downcase #=> "hello"
*/
@@ -6073,7 +6071,7 @@ rb_str_capitalize_bang(int argc, VALUE *argv, VALUE str)
enc = STR_ENC_GET(str);
rb_str_check_dummy_enc(enc);
if (RSTRING_LEN(str) == 0 || !RSTRING_PTR(str)) return Qnil;
- if (enc==rb_utf8_encoding()) {
+ if (enc==rb_utf8_encoding() && argc>0) { /* :lithuanian can temporarily be used for new functionality without options */
str_shared_replace(str, rb_str_casemap(str, &flags, enc));
modify = ONIGENC_CASE_MODIFIED & flags;
}
@@ -6149,7 +6147,7 @@ rb_str_swapcase_bang(int argc, VALUE *argv, VALUE str)
enc = STR_ENC_GET(str);
rb_str_check_dummy_enc(enc);
s = RSTRING_PTR(str); send = RSTRING_END(str);
- if (enc==rb_utf8_encoding()) {
+ if (enc==rb_utf8_encoding() && argc>0) { /* :lithuanian can temporarily be used for new functionality without options */
str_shared_replace(str, rb_str_casemap(str, &flags, enc));
modify = ONIGENC_CASE_MODIFIED & flags;
}
diff --git a/test/ruby/enc/test_case_comprehensive.rb b/test/ruby/enc/test_case_comprehensive.rb
index 7f7a2d10b9..da2354f4b9 100644
--- a/test/ruby/enc/test_case_comprehensive.rb
+++ b/test/ruby/enc/test_case_comprehensive.rb
@@ -78,10 +78,10 @@ class TestComprehensiveCaseFold < Test::Unit::TestCase
end
tests = [
- CaseTest.new(:downcase, [], downcase),
- CaseTest.new(:upcase, [], upcase),
- CaseTest.new(:capitalize, [], titlecase, downcase),
- # @@@@ TODO: figure out how to test swapcase
+ CaseTest.new(:downcase, [:lithuanian], downcase),
+ CaseTest.new(:upcase, [:lithuanian], upcase),
+ CaseTest.new(:capitalize, [:lithuanian], titlecase, downcase),
+ # swapcase?????!!!!!
CaseTest.new(:downcase, [:fold], casefold),
CaseTest.new(:upcase, [:turkic], turkic_upcase),
CaseTest.new(:downcase, [:turkic], turkic_downcase),