summaryrefslogtreecommitdiff
path: root/l10ntools/source/export.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'l10ntools/source/export.cxx')
-rw-r--r--l10ntools/source/export.cxx126
1 files changed, 73 insertions, 53 deletions
diff --git a/l10ntools/source/export.cxx b/l10ntools/source/export.cxx
index 746785a3b202..c57591b3553e 100644
--- a/l10ntools/source/export.cxx
+++ b/l10ntools/source/export.cxx
@@ -31,8 +31,6 @@
#include <cstddef>
#include <cstring>
-#include "comphelper/string.hxx"
-
#include "boost/scoped_ptr.hpp"
#include <stdio.h>
#include <stdlib.h>
@@ -46,9 +44,6 @@
extern "C" { int yyerror( const char * ); }
extern "C" { int YYWarning( const char * ); }
-using comphelper::string::getToken;
-using comphelper::string::getTokenCount;
-
namespace {
rtl::OString sActFileName; //TODO
@@ -166,6 +161,8 @@ int Parse( int nTyp, const char *pTokenText ){
}
void Close(){
global::exporter->pParseQueue->Close();
+ global::exporter.reset();
+ // avoid nontrivial Export dtor being executed during exit
}
int WorkOnTokenSet( int nTyp, char *pTokenText )
@@ -639,8 +636,9 @@ int Export::Execute( int nToken, const char * pToken )
nListIndex = 0;
nListLevel = 0;
}
- if ( (sToken.indexOf( '{' ) != -1) &&
- ( getTokenCount(sToken, '{') > getTokenCount(sToken, '}') ))
+ if (sToken.indexOf( '{' ) != -1
+ && (helper::countOccurrences(sToken, '{')
+ > helper::countOccurrences(sToken, '}')))
{
Parse( LEVELUP, "" );
}
@@ -650,14 +648,16 @@ int Export::Execute( int nToken, const char * pToken )
case LISTASSIGNMENT:
{
bDontWriteOutput = sal_False;
- rtl::OString sTmpToken(
- comphelper::string::remove(sToken, ' ').toAsciiLowerCase());
+ rtl::OString sTmpToken(sToken);
+ helper::searchAndReplaceAll(&sTmpToken, " ", rtl::OString());
+ sTmpToken = sTmpToken.toAsciiLowerCase();
sal_Int32 nPos = sTmpToken.indexOf("[en-us]=");
if (nPos != -1) {
rtl::OString sKey(sTmpToken.copy(0 , nPos));
- sKey = comphelper::string::remove(sKey, ' ');
- sKey = comphelper::string::remove(sKey, '\t');
- rtl::OString sValue = getToken(sToken, 1, '=');
+ helper::searchAndReplaceAll(&sKey, " ", rtl::OString());
+ helper::searchAndReplaceAll(&sKey, "\t", rtl::OString());
+ sal_Int32 n = 0;
+ rtl::OString sValue = sToken.getToken(1, '=', n);
CleanValue( sValue );
sKey = sKey.toAsciiUpperCase();
if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("STRINGLIST")))
@@ -705,9 +705,10 @@ int Export::Execute( int nToken, const char * pToken )
else
{
// new res. is a String- or FilterList
- rtl::OString sKey = getToken(sToken, 0, '[');
- sKey = comphelper::string::remove(sKey, ' ');
- sKey = comphelper::string::remove(sKey, '\t');
+ sal_Int32 n = 0;
+ rtl::OString sKey = sToken.getToken(0, '[', n);
+ helper::searchAndReplaceAll(&sKey, " ", rtl::OString());
+ helper::searchAndReplaceAll(&sKey, "\t", rtl::OString());
sKey = sKey.toAsciiUpperCase();
if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("STRINGLIST")))
nList = LIST_STRING;
@@ -720,7 +721,7 @@ int Export::Execute( int nToken, const char * pToken )
else if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("UIENTRIES")))
nList = LIST_UIENTRIES;
if ( nList ) {
- rtl::OString sLang = getToken(getToken(sToken, 1, '['), 0, ']');
+ rtl::OString sLang = sToken.getToken(0, ']', n);
CleanValue( sLang );
m_sListLang = sLang;
nListIndex = 0;
@@ -735,8 +736,9 @@ int Export::Execute( int nToken, const char * pToken )
// this is an entry for a String- or FilterList
if ( nList ) {
SetChildWithText();
- rtl::OString sEntry(getToken(sToken, 1, '\"'));
- if ( getTokenCount(sToken, '\"') > 3 )
+ sal_Int32 n = 0;
+ rtl::OString sEntry(sToken.getToken(1, '"', n));
+ if ( helper::countOccurrences(sToken, '"') > 2 )
sEntry += "\"";
if ( sEntry == "\\\"" )
sEntry = "\"";
@@ -756,14 +758,23 @@ int Export::Execute( int nToken, const char * pToken )
CutComment( sToken );
// this is a text line!!!
- rtl::OString sKey = getToken(getToken(sToken, 0, '='), 0, '[');
- sKey = comphelper::string::remove(sKey, ' ');
- sKey = comphelper::string::remove(sKey, '\t');
+ sal_Int32 n = 0;
+ rtl::OString t(sToken.getToken(0, '=', n));
+ n = 0;
+ rtl::OString sKey = t.getToken(0, '[', n);
+ helper::searchAndReplaceAll(&sKey, " ", rtl::OString());
+ helper::searchAndReplaceAll(&sKey, "\t", rtl::OString());
rtl::OString sText( GetText( sToken, nToken ));
rtl::OString sLang;
- if ( getToken(sToken, 0, '=').indexOf('[') != -1 )
+ n = 0;
+ if ( sToken.getToken(0, '=', n).indexOf('[') != -1 )
{
- sLang = getToken(getToken(getToken(sToken, 0, '='), 1, '['), 0, ']');
+ n = 0;
+ t = sToken.getToken(0, '=', n);
+ n = 0;
+ t = t.getToken(1, '[', n);
+ n = 0;
+ sLang = t.getToken(0, ']', n);
CleanValue( sLang );
}
rtl::OString sLangIndex = sLang;
@@ -864,24 +875,30 @@ int Export::Execute( int nToken, const char * pToken )
break;
case APPFONTMAPPING:
{
- using comphelper::string::replace;
-
bDontWriteOutput = sal_False;
// this is a AppfontMapping, so look if its a definition
// of field size
- rtl::OString sKey = getToken(sToken, 0, '=');
- sKey = comphelper::string::remove(sKey, ' ');
- sKey = comphelper::string::remove(sKey, '\t');
- rtl::OString sMapping = getToken(sToken, 1, '=');
- sMapping = getToken(sMapping, 1, '(');
- sMapping = getToken(sMapping, 0, ')');
- sMapping = replace(sMapping, rtl::OString(' '), rtl::OString());
- sMapping = replace(sMapping, rtl::OString('\t'), rtl::OString());
+ sal_Int32 n = 0;
+ rtl::OString sKey = sToken.getToken(0, '=', n);
+ helper::searchAndReplaceAll(&sKey, " ", rtl::OString());
+ helper::searchAndReplaceAll(&sKey, "\t", rtl::OString());
+ rtl::OString sMapping = sToken.getToken(0, '=', n);
+ n = 0;
+ sMapping = sMapping.getToken(1, '(', n);
+ n = 0;
+ sMapping = sMapping.getToken(0, ')', n);
+ helper::searchAndReplaceAll(
+ &sMapping, rtl::OString(' '), rtl::OString());
+ helper::searchAndReplaceAll(
+ &sMapping, rtl::OString('\t'), rtl::OString());
sKey = sKey.toAsciiUpperCase();
- if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("SIZE")))
- pResData->nWidth = getToken(sMapping, 0, ',').toInt32();
- else if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("POSSIZE")))
- pResData->nWidth = getToken(sMapping, 2, ',').toInt32();
+ if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("SIZE"))) {
+ n = 0;
+ pResData->nWidth = sMapping.getToken(0, ',', n).toInt32();
+ } else if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("POSSIZE"))) {
+ n = 0;
+ pResData->nWidth = sMapping.getToken(2, ',', n).toInt32();
+ }
}
break;
case RSCDEFINELEND:
@@ -892,14 +909,15 @@ int Export::Execute( int nToken, const char * pToken )
while( helper::searchAndReplace(&sToken, "\r", " " ) != -1 ) {};
while( helper::searchAndReplace(&sToken, "\t", " " ) != -1 ) {};
while( helper::searchAndReplace(&sToken, " ", " " ) != -1 ) {};
- rtl::OString sCondition(getToken(sToken, 0, ' '));
+ sal_Int32 n = 0;
+ rtl::OString sCondition(sToken.getToken(0, ' ', n));
if ( sCondition == "#ifndef" ) {
sActPForm = "!defined ";
- sActPForm += getToken(sToken, 1, ' ');
+ sActPForm += sToken.getToken(0, ' ', n);
}
else if ( sCondition == "#ifdef" ) {
sActPForm = "defined ";
- sActPForm += getToken(sToken, 1, ' ');
+ sActPForm += sToken.getToken(0, ' ', n);
}
else if ( sCondition == "#if" ) {
sActPForm = sToken.copy( 4 );
@@ -1117,20 +1135,20 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
rtl::OString Export::GetPairedListID(const rtl::OString& rText)
{
// < "STRING" ; IDENTIFIER ; > ;
+ sal_Int32 n = 0;
return helper::trimAscii(
- getToken(rText, 1, ';').toAsciiUpperCase().replace('\t', ' '));
+ rText.getToken(1, ';', n).toAsciiUpperCase().replace('\t', ' '));
}
rtl::OString Export::GetPairedListString(const rtl::OString& rText)
{
// < "STRING" ; IDENTIFIER ; > ;
- rtl::OString sString(getToken(rText, 0, ';').replace('\t', ' '));
- sString = comphelper::string::stripEnd(sString, ' ');
+ sal_Int32 n = 0;
+ rtl::OString sString(rText.getToken(0, ';', n).replace('\t', ' '));
+ sString = helper::trimAscii(sString);
rtl::OString s1(sString.copy(sString.indexOf('"') + 1));
sString = s1.copy(0, s1.lastIndexOf('"'));
- sString = comphelper::string::stripEnd(sString, ' ');
- sString = comphelper::string::stripStart(sString, ' ');
- return sString;
+ return helper::trimAscii(sString);
}
rtl::OString Export::StripList(const rtl::OString & rText)
@@ -1148,7 +1166,9 @@ sal_Bool Export::WriteExportList(ResData *pResData, ExportList *pExportList,
else {
sGID += ".";
sGID += pResData->sId;
- sGID = comphelper::string::stripEnd(sGID, '.');
+ while (sGID.getLength() != 0 && sGID[sGID.getLength() - 1] == '.') {
+ sGID = sGID.copy(0, sGID.getLength() - 1);
+ }
}
rtl::OString sCur;
@@ -1340,8 +1360,8 @@ rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
{
rtl::OString sTmp(rSource.copy(rSource.indexOf("=")));
CleanValue( sTmp );
- sTmp = comphelper::string::remove(sTmp, '\n');
- sTmp = comphelper::string::remove(sTmp, '\r');
+ helper::searchAndReplaceAll(&sTmp, "\n", rtl::OString());
+ helper::searchAndReplaceAll(&sTmp, "\r", rtl::OString());
helper::searchAndReplaceAll(
&sTmp, "\\\\\"", "-=<[BSlashBSlashHKom]>=-\"");
@@ -1350,9 +1370,10 @@ rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
helper::searchAndReplaceAll(&sTmp, "\\0x7F", "-=<[0x7F]>=-");
sal_uInt16 nState = TXT_STATE_TEXT;
- for (sal_Int32 i = 1; i < getTokenCount(sTmp, '"'); ++i)
+ for (sal_Int32 i = 1; i <= helper::countOccurrences(sTmp, '"'); ++i)
{
- rtl::OString sToken(getToken(sTmp, i, '"'));
+ sal_Int32 n = 0;
+ rtl::OString sToken(sTmp.getToken(i, '"', n));
if (!sToken.isEmpty()) {
if ( nState == TXT_STATE_TEXT ) {
sReturn += sToken;
@@ -1363,8 +1384,7 @@ rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
while (helper::searchAndReplace(&sToken, " ", " ")
!= -1)
{}
- sToken = comphelper::string::stripStart(sToken, ' ');
- sToken = comphelper::string::stripEnd(sToken, ' ');
+ sToken = helper::trimAscii(sToken);
if (!sToken.isEmpty()) {
sReturn += "\\\" ";
sReturn += sToken;