diff options
author | Dani Megert | 2012-10-25 12:21:33 +0000 |
---|---|---|
committer | Dani Megert | 2012-10-25 12:21:33 +0000 |
commit | 6d8d25ceafc477087e85ed3340bddf46ef92bc80 (patch) | |
tree | 88f66b65a581f02a218ea67c2f490e34cd9795cb | |
parent | d0aa183bc9717b7490f75a28fffeb46b3bf4625f (diff) | |
download | eclipse.platform.text-6d8d25ceafc477087e85ed3340bddf46ef92bc80.tar.gz eclipse.platform.text-6d8d25ceafc477087e85ed3340bddf46ef92bc80.tar.xz eclipse.platform.text-6d8d25ceafc477087e85ed3340bddf46ef92bc80.zip |
Fixed bug 380218: TUR4.2: Regular Expression \C violates the relationv20121025-122133I20121106-0800I20121031-2000I20121031-0800I20121030-2000I20121030-0800I20121029-2000I20121029-0800I20121028-2000
between doted I and dotless I in Turkish.
3 files changed, 26 insertions, 7 deletions
diff --git a/org.eclipse.search/search/org/eclipse/search/internal/core/text/PatternConstructor.java b/org.eclipse.search/search/org/eclipse/search/internal/core/text/PatternConstructor.java index 68608033429..7e94adecc7e 100644 --- a/org.eclipse.search/search/org/eclipse/search/internal/core/text/PatternConstructor.java +++ b/org.eclipse.search/search/org/eclipse/search/internal/core/text/PatternConstructor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. + * Copyright (c) 2000, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -491,11 +491,11 @@ public class PatternConstructor { */ private void interpretRetainCase(StringBuffer buf, char ch) { if (fRetainCaseMode == RC_UPPER) - buf.append(Character.toUpperCase(ch)); + buf.append(String.valueOf(ch).toUpperCase()); else if (fRetainCaseMode == RC_LOWER) - buf.append(Character.toLowerCase(ch)); + buf.append(String.valueOf(ch).toLowerCase()); else if (fRetainCaseMode == RC_FIRSTUPPER) { - buf.append(Character.toUpperCase(ch)); + buf.append(String.valueOf(ch).toUpperCase()); fRetainCaseMode= RC_MIXED; } else buf.append(ch); diff --git a/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java b/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java index 89a4886fd42..24fac328ffa 100644 --- a/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java +++ b/org.eclipse.text.tests/src/org/eclipse/text/tests/FindReplaceDocumentAdapterTest.java @@ -13,6 +13,7 @@ package org.eclipse.text.tests; import java.util.Arrays; +import java.util.Locale; import java.util.regex.PatternSyntaxException; import junit.framework.Assert; @@ -311,6 +312,24 @@ public class FindReplaceDocumentAdapterTest extends TestCase { fDocument.set("FOO"); regexReplace("FOO", "xyz\\Cna\\u00EFve\\xFF", findReplaceDocumentAdapter); assertEquals("xyzNA\u00CFVE\u0178", fDocument.get()); + + fDocument.set("A"); + regexReplace("A", "\\Ci", findReplaceDocumentAdapter); + assertEquals("I", fDocument.get()); + + Locale currentLocale= Locale.getDefault(); + try { + Locale.setDefault(new Locale("tr")); + fDocument.set("A"); + regexReplace("A", "\\Ci", findReplaceDocumentAdapter); + assertEquals("\u0130", fDocument.get()); + + fDocument.set("a"); + regexReplace("a", "\\CI", findReplaceDocumentAdapter); + assertEquals("\u0131", fDocument.get()); + } finally { + Locale.setDefault(currentLocale); + } } private void regexReplace(String find, String replace, FindReplaceDocumentAdapter findReplaceDocumentAdapter) throws BadLocationException { diff --git a/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java b/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java index 40bdd17a8a0..8ec45f3b142 100644 --- a/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java +++ b/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java @@ -349,11 +349,11 @@ public class FindReplaceDocumentAdapter implements CharSequence { */ private void interpretRetainCase(StringBuffer buf, char ch) { if (fRetainCaseMode == RC_UPPER) - buf.append(Character.toUpperCase(ch)); + buf.append(String.valueOf(ch).toUpperCase()); else if (fRetainCaseMode == RC_LOWER) - buf.append(Character.toLowerCase(ch)); + buf.append(String.valueOf(ch).toLowerCase()); else if (fRetainCaseMode == RC_FIRSTUPPER) { - buf.append(Character.toUpperCase(ch)); + buf.append(String.valueOf(ch).toUpperCase()); fRetainCaseMode= RC_MIXED; } else buf.append(ch); |