Reviewed by Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Dec 2004 00:10:25 +0000 (00:10 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 17 Dec 2004 00:10:25 +0000 (00:10 +0000)
        - fixed <rdar://problem/3920764> Unimplemented String methods toLocaleLowerCase and toLocaleUpperCase

        * kjs/string_object.h: Added toLocaleLowerCase and toLocaleUpperCase.
        * kjs/string_object.cpp: (StringProtoFuncImp::call): Made locale versions be synonmyms for the
        non-locale-specific versions.
        * kjs/string_object.lut.h: Regenerated.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8233 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/string_object.cpp
JavaScriptCore/kjs/string_object.h
JavaScriptCore/kjs/string_object.lut.h

index d8a5a52808ff706cc852208a15dd9ea838786c04..1b2f138fe39601cb0eef7c4082139acfac885a9b 100644 (file)
@@ -1,3 +1,14 @@
+2004-12-16  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3920764> Unimplemented String methods toLocaleLowerCase and toLocaleUpperCase
+
+        * kjs/string_object.h: Added toLocaleLowerCase and toLocaleUpperCase.
+        * kjs/string_object.cpp: (StringProtoFuncImp::call): Made locale versions be synonmyms for the
+        non-locale-specific versions.
+        * kjs/string_object.lut.h: Regenerated.
+
 2004-12-14  Richard Williamson   <rjw@apple.com>
 
        Pass URL of plugin view when call into JNI.
index ad02a8316832b1a8797685b14963d2d6dc5af12d..056f2ad8dae29c9d2cf239dec0d5de626105a834 100644 (file)
@@ -119,6 +119,8 @@ const ClassInfo StringPrototypeImp::info = {"String", &StringInstanceImp::info,
   substring            StringProtoFuncImp::Substring   DontEnum|Function       2
   toLowerCase          StringProtoFuncImp::ToLowerCase DontEnum|Function       0
   toUpperCase          StringProtoFuncImp::ToUpperCase DontEnum|Function       0
+  toLocaleLowerCase    StringProtoFuncImp::ToLocaleLowerCase DontEnum|Function 0
+  toLocaleUpperCase     StringProtoFuncImp::ToLocaleUpperCase DontEnum|Function        0
 #
 # Under here: html extension, should only exist if KJS_PURE_ECMA is not defined
 # I guess we need to generate two hashtables in the .lut.h file, and use #ifdef
@@ -614,12 +616,14 @@ Value StringProtoFuncImp::call(ExecState *exec, Object &thisObj, const List &arg
     }
     break;
   case ToLowerCase:
+  case ToLocaleLowerCase: // FIXME: To get this 100% right we need to detect Turkish and change I to lowercase i without a dot.
     u = s;
     for (i = 0; i < len; i++)
       u[i] = u[i].toLower();
     result = String(u);
     break;
   case ToUpperCase:
+  case ToLocaleUpperCase: // FIXME: To get this 100% right we need to detect Turkish and change i to uppercase I with a dot.
     u = s;
     for (i = 0; i < len; i++)
       u[i] = u[i].toUpper();
index 66f80fd8bb7419d303d00f56ef592728f3d5d0b5..05c5904cafa4560cafb9812040be3b4bbf859df5 100644 (file)
@@ -71,7 +71,8 @@ namespace KJS {
 
     enum { ToString, ValueOf, CharAt, CharCodeAt, Concat, IndexOf, LastIndexOf,
           Match, Replace, Search, Slice, Split,
-          Substr, Substring, FromCharCode, ToLowerCase, ToUpperCase
+          Substr, Substring, FromCharCode, ToLowerCase, ToUpperCase,
+           ToLocaleLowerCase, ToLocaleUpperCase
 #ifndef KJS_PURE_ECMA
           , Big, Small, Blink, Bold, Fixed, Italics, Strike, Sub, Sup,
           Fontcolor, Fontsize, Anchor, Link
index 8b0a611e53b7c2cf3f9f230f16a83fcb3815a1b1..8c64c7593141f6a28aee5d1df4cb16c4132e9a3f 100644 (file)
@@ -9,10 +9,10 @@ const struct HashEntry stringTableEntries[] = {
    { "bold", StringProtoFuncImp::Bold, DontEnum|Function, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { "lastIndexOf", StringProtoFuncImp::LastIndexOf, DontEnum|Function, 1, 0 },
-   { "replace", StringProtoFuncImp::Replace, DontEnum|Function, 2, 0 },
+   { "replace", StringProtoFuncImp::Replace, DontEnum|Function, 2, &stringTableEntries[29] },
    { "match", StringProtoFuncImp::Match, DontEnum|Function, 1, &stringTableEntries[27] },
-   { "search", StringProtoFuncImp::Search, DontEnum|Function, 1, &stringTableEntries[34] },
-   { 0, 0, 0, 0, 0 },
+   { "search", StringProtoFuncImp::Search, DontEnum|Function, 1, &stringTableEntries[35] },
+   { "toLocaleUpperCase", StringProtoFuncImp::ToLocaleUpperCase, DontEnum|Function, 0, 0 },
    { "concat", StringProtoFuncImp::Concat, DontEnum|Function, 1, &stringTableEntries[26] },
    { 0, 0, 0, 0, 0 },
    { "split", StringProtoFuncImp::Split, DontEnum|Function, 2, &stringTableEntries[28] },
@@ -22,27 +22,28 @@ const struct HashEntry stringTableEntries[] = {
    { "link", StringProtoFuncImp::Link, DontEnum|Function, 1, 0 },
    { "indexOf", StringProtoFuncImp::IndexOf, DontEnum|Function, 1, 0 },
    { 0, 0, 0, 0, 0 },
-   { "small", StringProtoFuncImp::Small, DontEnum|Function, 0, &stringTableEntries[32] },
+   { "small", StringProtoFuncImp::Small, DontEnum|Function, 0, &stringTableEntries[33] },
    { "sub", StringProtoFuncImp::Sub, DontEnum|Function, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "valueOf", StringProtoFuncImp::ValueOf, DontEnum|Function, 0, &stringTableEntries[29] },
+   { "valueOf", StringProtoFuncImp::ValueOf, DontEnum|Function, 0, &stringTableEntries[30] },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { "charAt", StringProtoFuncImp::CharAt, DontEnum|Function, 1, 0 },
    { "fontsize", StringProtoFuncImp::Fontsize, DontEnum|Function, 1, 0 },
    { "substr", StringProtoFuncImp::Substr, DontEnum|Function, 2, 0 },
-   { "slice", StringProtoFuncImp::Slice, DontEnum|Function, 2, &stringTableEntries[30] },
+   { "slice", StringProtoFuncImp::Slice, DontEnum|Function, 2, &stringTableEntries[31] },
    { "substring", StringProtoFuncImp::Substring, DontEnum|Function, 2, 0 },
    { "toLowerCase", StringProtoFuncImp::ToLowerCase, DontEnum|Function, 0, 0 },
-   { "big", StringProtoFuncImp::Big, DontEnum|Function, 0, &stringTableEntries[35] },
-   { "blink", StringProtoFuncImp::Blink, DontEnum|Function, 0, &stringTableEntries[31] },
-   { "fixed", StringProtoFuncImp::Fixed, DontEnum|Function, 0, &stringTableEntries[33] },
+   { "toLocaleLowerCase", StringProtoFuncImp::ToLocaleLowerCase, DontEnum|Function, 0, 0 },
+   { "big", StringProtoFuncImp::Big, DontEnum|Function, 0, &stringTableEntries[36] },
+   { "blink", StringProtoFuncImp::Blink, DontEnum|Function, 0, &stringTableEntries[32] },
+   { "fixed", StringProtoFuncImp::Fixed, DontEnum|Function, 0, &stringTableEntries[34] },
    { "italics", StringProtoFuncImp::Italics, DontEnum|Function, 0, 0 },
    { "strike", StringProtoFuncImp::Strike, DontEnum|Function, 0, 0 },
    { "sup", StringProtoFuncImp::Sup, DontEnum|Function, 0, 0 },
    { "fontcolor", StringProtoFuncImp::Fontcolor, DontEnum|Function, 1, 0 }
 };
 
-const struct HashTable stringTable = { 2, 36, stringTableEntries, 26 };
+const struct HashTable stringTable = { 2, 37, stringTableEntries, 26 };
 
 } // namespace