| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008 Tony Chang <idealisms@gmail.com> | 3 * Copyright (C) 2008 Tony Chang <idealisms@gmail.com> |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 static USet* getSmartSet(bool isPreviousCharacter) | 47 static USet* getSmartSet(bool isPreviousCharacter) |
| 48 { | 48 { |
| 49 static USet* preSmartSet = nullptr; | 49 static USet* preSmartSet = nullptr; |
| 50 static USet* postSmartSet = nullptr; | 50 static USet* postSmartSet = nullptr; |
| 51 USet* smartSet = isPreviousCharacter ? preSmartSet : postSmartSet; | 51 USet* smartSet = isPreviousCharacter ? preSmartSet : postSmartSet; |
| 52 if (!smartSet) { | 52 if (!smartSet) { |
| 53 // Whitespace and newline (kCFCharacterSetWhitespaceAndNewline) | 53 // Whitespace and newline (kCFCharacterSetWhitespaceAndNewline) |
| 54 UErrorCode ec = U_ZERO_ERROR; | 54 UErrorCode ec = U_ZERO_ERROR; |
| 55 String whitespaceAndNewline("[[:WSpace:] [\\u000A\\u000B\\u000C\\u000D\\
u0085]]"); | 55 String whitespaceAndNewline("[[:WSpace:] [\\u000A\\u000B\\u000C\\u000D\\
u0085]]"); |
| 56 smartSet = uset_openPattern(whitespaceAndNewline.charactersWithNullTermi
nation().data(), whitespaceAndNewline.length(), &ec); | 56 smartSet = uset_openPattern(whitespaceAndNewline.charactersWithNullTermi
nation().data(), whitespaceAndNewline.length(), &ec); |
| 57 ASSERT(U_SUCCESS(ec)); | 57 DCHECK(U_SUCCESS(ec)) << ec; |
| 58 | 58 |
| 59 // CJK ranges | 59 // CJK ranges |
| 60 uset_addRange(smartSet, 0x1100, 0x1100 + 256); // Hangul Jamo (0x1100 -
0x11FF) | 60 uset_addRange(smartSet, 0x1100, 0x1100 + 256); // Hangul Jamo (0x1100 -
0x11FF) |
| 61 uset_addRange(smartSet, 0x2E80, 0x2E80 + 352); // CJK & Kangxi Radicals
(0x2E80 - 0x2FDF) | 61 uset_addRange(smartSet, 0x2E80, 0x2E80 + 352); // CJK & Kangxi Radicals
(0x2E80 - 0x2FDF) |
| 62 uset_addRange(smartSet, 0x2FF0, 0x2FF0 + 464); // Ideograph Descriptions
, CJK Symbols, Hiragana, Katakana, Bopomofo, Hangul Compatibility Jamo, Kanbun,
& Bopomofo Ext (0x2FF0 - 0x31BF) | 62 uset_addRange(smartSet, 0x2FF0, 0x2FF0 + 464); // Ideograph Descriptions
, CJK Symbols, Hiragana, Katakana, Bopomofo, Hangul Compatibility Jamo, Kanbun,
& Bopomofo Ext (0x2FF0 - 0x31BF) |
| 63 uset_addRange(smartSet, 0x3200, 0x3200 + 29392); // Enclosed CJK, CJK Id
eographs (Uni Han & Ext A), & Yi (0x3200 - 0xA4CF) | 63 uset_addRange(smartSet, 0x3200, 0x3200 + 29392); // Enclosed CJK, CJK Id
eographs (Uni Han & Ext A), & Yi (0x3200 - 0xA4CF) |
| 64 uset_addRange(smartSet, 0xAC00, 0xAC00 + 11183); // Hangul Syllables (0x
AC00 - 0xD7AF) | 64 uset_addRange(smartSet, 0xAC00, 0xAC00 + 11183); // Hangul Syllables (0x
AC00 - 0xD7AF) |
| 65 uset_addRange(smartSet, 0xF900, 0xF900 + 352); // CJK Compatibility Ideo
graphs (0xF900 - 0xFA5F) | 65 uset_addRange(smartSet, 0xF900, 0xF900 + 352); // CJK Compatibility Ideo
graphs (0xF900 - 0xFA5F) |
| 66 uset_addRange(smartSet, 0xFE30, 0xFE30 + 32); // CJK Compatibility From
(0xFE30 - 0xFE4F) | 66 uset_addRange(smartSet, 0xFE30, 0xFE30 + 32); // CJK Compatibility From
(0xFE30 - 0xFE4F) |
| 67 uset_addRange(smartSet, 0xFF00, 0xFF00 + 240); // Half/Full Width Form (
0xFF00 - 0xFFEF) | 67 uset_addRange(smartSet, 0xFF00, 0xFF00 + 240); // Half/Full Width Form (
0xFF00 - 0xFFEF) |
| 68 uset_addRange(smartSet, 0x20000, 0x20000 + 0xA6D7); // CJK Ideograph Exn
tension B | 68 uset_addRange(smartSet, 0x20000, 0x20000 + 0xA6D7); // CJK Ideograph Exn
tension B |
| 69 uset_addRange(smartSet, 0x2F800, 0x2F800 + 0x021E); // CJK Compatibility
Ideographs (0x2F800 - 0x2FA1D) | 69 uset_addRange(smartSet, 0x2F800, 0x2F800 + 0x021E); // CJK Compatibility
Ideographs (0x2F800 - 0x2FA1D) |
| 70 | 70 |
| 71 if (isPreviousCharacter) { | 71 if (isPreviousCharacter) { |
| 72 addAllCodePoints(smartSet, "([\"\'#$/-`{"); | 72 addAllCodePoints(smartSet, "([\"\'#$/-`{"); |
| 73 preSmartSet = smartSet; | 73 preSmartSet = smartSet; |
| 74 } else { | 74 } else { |
| 75 addAllCodePoints(smartSet, ")].,;:?\'!\"%*-/}"); | 75 addAllCodePoints(smartSet, ")].,;:?\'!\"%*-/}"); |
| 76 | 76 |
| 77 // Punctuation (kCFCharacterSetPunctuation) | 77 // Punctuation (kCFCharacterSetPunctuation) |
| 78 UErrorCode ec = U_ZERO_ERROR; | 78 UErrorCode ec = U_ZERO_ERROR; |
| 79 String punctuationClass("[:P:]"); | 79 String punctuationClass("[:P:]"); |
| 80 USet* icuPunct = uset_openPattern(punctuationClass.charactersWithNul
lTermination().data(), punctuationClass.length(), &ec); | 80 USet* icuPunct = uset_openPattern(punctuationClass.charactersWithNul
lTermination().data(), punctuationClass.length(), &ec); |
| 81 ASSERT(U_SUCCESS(ec)); | 81 DCHECK(U_SUCCESS(ec)) << ec; |
| 82 uset_addAll(smartSet, icuPunct); | 82 uset_addAll(smartSet, icuPunct); |
| 83 uset_close(icuPunct); | 83 uset_close(icuPunct); |
| 84 | 84 |
| 85 postSmartSet = smartSet; | 85 postSmartSet = smartSet; |
| 86 } | 86 } |
| 87 } | 87 } |
| 88 return smartSet; | 88 return smartSet; |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool isCharacterSmartReplaceExempt(UChar32 c, bool isPreviousCharacter) | 91 bool isCharacterSmartReplaceExempt(UChar32 c, bool isPreviousCharacter) |
| 92 { | 92 { |
| 93 return uset_contains(getSmartSet(isPreviousCharacter), c); | 93 return uset_contains(getSmartSet(isPreviousCharacter), c); |
| 94 } | 94 } |
| 95 | 95 |
| 96 } | 96 } |
| 97 | 97 |
| 98 #endif // !OS(MACOSX) | 98 #endif // !OS(MACOSX) |
| OLD | NEW |