Changeset 13740 in webkit for trunk/JavaScriptCore/kjs/string_object.cpp
- Timestamp:
- Apr 8, 2006, 10:21:52 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/string_object.cpp
r13015 r13740 35 35 #include <stdio.h> 36 36 #include "string_object.lut.h" 37 #include <kxmlcore/unicode/Unicode.h> 37 38 38 39 using namespace KJS; … … 624 625 break; 625 626 case ToLowerCase: 626 case ToLocaleLowerCase: // FIXME: To get this 100% right we need to detect Turkish and change I to lowercase i without a dot.627 case ToLocaleLowerCase: { // FIXME: See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt for locale-sensitive mappings that aren't implemented. 627 628 u = s; 628 for (i = 0; i < len; i++) 629 u[i] = u[i].toLower(); 630 result = jsString(u); 631 break; 629 u.copyForWriting(); 630 uint16_t* dataPtr = reinterpret_cast<uint16_t*>(u.rep()->data()); 631 uint16_t* destIfNeeded; 632 633 int len = KXMLCore::Unicode::toLower(dataPtr, u.size(), destIfNeeded); 634 if (len >= 0) 635 result = jsString(UString(reinterpret_cast<UChar *>(destIfNeeded ? destIfNeeded : dataPtr), len)); 636 else 637 result = jsString(s); 638 639 free(destIfNeeded); 640 break; 641 } 632 642 case ToUpperCase: 633 case ToLocaleUpperCase: // FIXME: To get this 100% right we need to detect Turkish and change i to uppercase I with a dot.643 case ToLocaleUpperCase: { // FIXME: See http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt for locale-sensitive mappings that aren't implemented. 634 644 u = s; 635 for (i = 0; i < len; i++) 636 u[i] = u[i].toUpper(); 637 result = jsString(u); 638 break; 645 u.copyForWriting(); 646 uint16_t* dataPtr = reinterpret_cast<uint16_t*>(u.rep()->data()); 647 uint16_t* destIfNeeded; 648 649 int len = KXMLCore::Unicode::toUpper(dataPtr, u.size(), destIfNeeded); 650 if (len >= 0) 651 result = jsString(UString(reinterpret_cast<UChar *>(destIfNeeded ? destIfNeeded : dataPtr), len)); 652 else 653 result = jsString(s); 654 655 free(destIfNeeded); 656 break; 657 } 639 658 #ifndef KJS_PURE_ECMA 640 659 case Big:
Note:
See TracChangeset
for help on using the changeset viewer.