[Libreoffice-commits] .: 3 commits - svl/inc svl/qa svl/source
August Sodora
augsod at kemper.freedesktop.org
Sat Nov 26 15:13:32 PST 2011
svl/inc/svl/lngmisc.hxx | 2 -
svl/qa/unit/test_lngmisc.cxx | 36 ++++++++++++++++++++++++++++----
svl/source/misc/lngmisc.cxx | 48 ++++++++++++++++++++-----------------------
3 files changed, 56 insertions(+), 30 deletions(-)
New commits:
commit 83345ff8d8b709d6558238cd8e4f08323f3c97bc
Author: August Sodora <augsod at gmail.com>
Date: Sat Nov 26 18:13:06 2011 -0500
Simplification and accompanying tests
diff --git a/svl/qa/unit/test_lngmisc.cxx b/svl/qa/unit/test_lngmisc.cxx
index 6411e20..d982f44 100644
--- a/svl/qa/unit/test_lngmisc.cxx
+++ b/svl/qa/unit/test_lngmisc.cxx
@@ -17,14 +17,14 @@ namespace
private:
void testRemoveHyphens();
void testRemoveControlChars();
- // void testReplaceControlChars();
+ void testReplaceControlChars();
// void testGetThesaurusReplaceText();
CPPUNIT_TEST_SUITE(LngMiscTest);
CPPUNIT_TEST(testRemoveHyphens);
CPPUNIT_TEST(testRemoveControlChars);
- // CPPUNIT_TEST(testReplaceControlChars);
+ CPPUNIT_TEST(testReplaceControlChars);
// CPPUNIT_TEST(testGetThesaurusReplaceText);
CPPUNIT_TEST_SUITE_END();
@@ -92,12 +92,40 @@ namespace
CPPUNIT_ASSERT(str4.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(" ")));
}
- /*
void LngMiscTest::testReplaceControlChars()
{
- CPPUNIT_ASSERT(true);
+ ::rtl::OUString str1(RTL_CONSTASCII_USTRINGPARAM(""));
+ ::rtl::OUString str2(RTL_CONSTASCII_USTRINGPARAM("asdf"));
+ ::rtl::OUString str3(RTL_CONSTASCII_USTRINGPARAM("asdf\nasdf"));
+
+ ::rtl::OUStringBuffer str4Buf(33);
+ str4Buf.setLength(33);
+ for(int i = 0; i < 33; i++)
+ str4Buf[i] = static_cast<sal_Unicode>(i);
+ // TODO: is this a bug? shouldn't RemoveControlChars remove this?
+ // str4Buf[33] = static_cast<sal_Unicode>(0x7F);
+ ::rtl::OUString str4(str4Buf.makeStringAndClear());
+
+ bool bModified = linguistic::ReplaceControlChars(str1);
+ CPPUNIT_ASSERT(!bModified);
+ CPPUNIT_ASSERT(str1.isEmpty());
+
+ bModified = linguistic::ReplaceControlChars(str2);
+ CPPUNIT_ASSERT(!bModified);
+ CPPUNIT_ASSERT(str2.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("asdf")));
+
+ bModified = linguistic::ReplaceControlChars(str3);
+ CPPUNIT_ASSERT(bModified);
+ CPPUNIT_ASSERT(str3.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("asdf asdf")));
+
+ bModified = linguistic::ReplaceControlChars(str4);
+ CPPUNIT_ASSERT(bModified);
+ CPPUNIT_ASSERT(str4.getLength() == 32);
+ for(int i = 0; i < 32; i++)
+ CPPUNIT_ASSERT(str4[i] == ' ');
}
+ /*
void LngMiscTest::testGetThesaurusReplaceText()
{
CPPUNIT_ASSERT(true);
diff --git a/svl/source/misc/lngmisc.cxx b/svl/source/misc/lngmisc.cxx
index 5821db6..49a4433 100644
--- a/svl/source/misc/lngmisc.cxx
+++ b/svl/source/misc/lngmisc.cxx
@@ -82,29 +82,27 @@ namespace linguistic
// 1. non breaking field characters get removed
// 2. remaining control characters will be replaced by ' '
- bool bModified = false;
- sal_Int32 nCtrlChars = GetNumControlChars( rTxt );
- if (nCtrlChars)
+ if (GetNumControlChars(rTxt) == 0)
+ return false;
+
+ sal_Int32 n = rTxt.getLength();
+
+ rtl::OUStringBuffer aBuf(n);
+ aBuf.setLength(n);
+
+ sal_Int32 j = 0;
+ for (sal_Int32 i = 0; i < n && j < n; ++i)
{
- sal_Int32 nLen = rTxt.getLength();
- rtl::OUStringBuffer aBuf( nLen );
- sal_Int32 nCnt = 0;
- for (sal_Int32 i = 0; i < nLen; ++i)
- {
- sal_Unicode cChar = rTxt[i];
- if (CH_TXTATR_INWORD != cChar)
- {
- if (IsControlChar( cChar ))
- cChar = ' ';
- DBG_ASSERT( nCnt < nLen, "index out of range" );
- aBuf.setCharAt( nCnt++, cChar );
- }
- }
- aBuf.setLength( nCnt );
- rTxt = aBuf.makeStringAndClear();
- bModified = true;
+ if (CH_TXTATR_INWORD == rTxt[i])
+ continue;
+
+ aBuf[j++] = IsControlChar(rTxt[i]) ? ' ' : rTxt[i];
}
- return bModified;
+
+ aBuf.setLength(j);
+ rTxt = aBuf.makeStringAndClear();
+
+ return true;
}
String GetThesaurusReplaceText(const String &rText)
commit e280ff03f3a2fdcd452123f206007bac804d6799
Author: August Sodora <augsod at gmail.com>
Date: Sat Nov 26 15:26:46 2011 -0500
Remove unused parameter
diff --git a/svl/inc/svl/lngmisc.hxx b/svl/inc/svl/lngmisc.hxx
index 6c71b45..4a94bc7 100644
--- a/svl/inc/svl/lngmisc.hxx
+++ b/svl/inc/svl/lngmisc.hxx
@@ -62,7 +62,7 @@ SVL_DLLPRIVATE sal_Int32 GetNumControlChars( const rtl::OUString &rTxt );
SVL_DLLPUBLIC bool RemoveHyphens( rtl::OUString &rTxt );
SVL_DLLPUBLIC bool RemoveControlChars( rtl::OUString &rTxt );
-SVL_DLLPUBLIC bool ReplaceControlChars( rtl::OUString &rTxt, sal_Char aRplcChar = ' ' );
+SVL_DLLPUBLIC bool ReplaceControlChars(rtl::OUString &rTxt);
SVL_DLLPUBLIC String GetThesaurusReplaceText( const String &rText );
diff --git a/svl/source/misc/lngmisc.cxx b/svl/source/misc/lngmisc.cxx
index 55028e8..5821db6 100644
--- a/svl/source/misc/lngmisc.cxx
+++ b/svl/source/misc/lngmisc.cxx
@@ -73,7 +73,7 @@ namespace linguistic
return true;
}
- bool ReplaceControlChars( rtl::OUString &rTxt, sal_Char /*aRplcChar*/ )
+ bool ReplaceControlChars(rtl::OUString &rTxt)
{
// non breaking field character
static const sal_Char CH_TXTATR_INWORD = static_cast<sal_Char>(0x02);
commit 919abbfe9b1461e4accbdebe4a2475379d2d5731
Author: August Sodora <augsod at gmail.com>
Date: Sat Nov 26 15:24:38 2011 -0500
Avoid use of the preprocessor
diff --git a/svl/source/misc/lngmisc.cxx b/svl/source/misc/lngmisc.cxx
index 4065290..55028e8 100644
--- a/svl/source/misc/lngmisc.cxx
+++ b/svl/source/misc/lngmisc.cxx
@@ -73,11 +73,11 @@ namespace linguistic
return true;
}
- // non breaking field character
-#define CH_TXTATR_INWORD ((sal_Char) 0x02)
-
bool ReplaceControlChars( rtl::OUString &rTxt, sal_Char /*aRplcChar*/ )
{
+ // non breaking field character
+ static const sal_Char CH_TXTATR_INWORD = static_cast<sal_Char>(0x02);
+
// the resulting string looks like this:
// 1. non breaking field characters get removed
// 2. remaining control characters will be replaced by ' '
More information about the Libreoffice-commits
mailing list