Author: jani Date: Thu Feb 28 19:21:39 2013 New Revision: 1451299 URL: http://svn.apache.org/r1451299 Log: sw running
Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.cxx openoffice/branches/l10n/main/l10ntools/source/gCon.hxx openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConPolex.l openoffice/branches/l10n/main/l10ntools/source/gConSrc.hxx openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConSrclex.l openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConUlflex.l openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConXcslex.l openoffice/branches/l10n/main/l10ntools/source/gConXcu.hxx openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConXculex.l openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConXrmlex.l openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx openoffice/branches/l10n/main/l10ntools/source/gLang.hxx Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gCon.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gCon.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gCon.cxx Thu Feb 28 19:21:39 2013 @@ -101,17 +101,8 @@ void convert_gen::execute() /********************** I M P L E M E N T A T I O N **********************/ -bool convert_gen::isError() -{ - return convert_gen_impl::mcImpl->mbInError; -} - - - -/********************** I M P L E M E N T A T I O N **********************/ convert_gen_impl::convert_gen_impl(l10nMem& crMemory) : mcMemory(crMemory), - mbInError(false), miLineNo(1) { } @@ -230,7 +221,5 @@ std::string& convert_gen_impl::copySourc /********************** I M P L E M E N T A T I O N **********************/ std::string convert_gen_impl::showError(char *sText) { - mbInError = true; - std::cerr << "ERROR in " << msSourceFile << ":" << miLineNo << ": " << sText << std::endl; - return "ERROR"; + return mcMemory.showError(miLineNo, sText); } \ No newline at end of file Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gCon.hxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gCon.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gCon.hxx Thu Feb 28 19:21:39 2013 @@ -66,7 +66,6 @@ class convert_gen_impl private: std::string msSourceBuffer, msCopyText; - bool mbInError; int mnSourceReadIndex; void prepareFile(); Modified: openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx Thu Feb 28 19:21:39 2013 @@ -52,7 +52,7 @@ namespace PoWrap /********************** I M P L E M E N T A T I O N **********************/ void convert_po::execute() { - PoWrap::genpo_lex(); + PoWrap::yylex(); } @@ -91,7 +91,7 @@ void convert_po::stopCollectData(char *s } } else - mcMemory.setEnUsKey(useKey, std::string("dummy"), sCollectedText); + mcMemory.setEnUsKey(miLineNo, useKey, std::string("dummy"), sCollectedText); // mbCollectingData = false; msCollector.clear(); Modified: openoffice/branches/l10n/main/l10ntools/source/gConPolex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConPolex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConPolex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConPolex.l Thu Feb 28 19:21:39 2013 @@ -49,7 +49,8 @@ /* --- The following options are for future use (maybe) */ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ -%option 8bit noyywrap never-interactive prefix="genpo_" +%option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 Modified: openoffice/branches/l10n/main/l10ntools/source/gConSrc.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConSrc.hxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConSrc.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConSrc.hxx Thu Feb 28 19:21:39 2013 @@ -49,7 +49,6 @@ class convert_src : public convert_gen_i void setMacro (char *syyText); void setList (char *syyText); void setListItem (char *syyText, bool bIsStart); - void setStringList (char *syyText); void setNL (char *syyText, bool bMacro); void startBlock (char *syyText); void stopBlock (char *syyText); @@ -59,15 +58,18 @@ class convert_src : public convert_gen_i std::string msValue; std::string msName; std::string msTextName; - std::string msSaveTextName; + std::string msCmd; bool mbEnUs; bool mbExpectName; bool mbExpectMacro; - bool mbExpectStringList; bool mbAutoPush; bool mbValuePresent; + bool mbInListItem; + bool mbInList; int miListCount; int miMacroLevel; void execute(); + void trim(std::string& sText); + void buildKey(std::string& sKey); }; #endif \ No newline at end of file Modified: openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx Thu Feb 28 19:21:39 2013 @@ -40,10 +40,11 @@ convert_src::convert_src(l10nMem& crMemo mbEnUs(false), mbExpectName(false), mbExpectMacro(false), - mbExpectStringList(false), mbExpectValue(false), mbAutoPush(false), - mbValuePresent(false) + mbValuePresent(false), + mbInList(false), + mbInListItem(false) {} convert_src::~convert_src() {} @@ -71,20 +72,13 @@ void convert_src::execute() /********************** I M P L E M E N T A T I O N **********************/ void convert_src::setValue(char *syyText, char *sbuildValue) { - if (mbExpectStringList) - { - std::stringstream ssBuf; + copySource(syyText); - msTextName = msSaveTextName; - mbEnUs = - mbExpectName = true; - ssBuf << ++miListCount; - msName = ssBuf.str(); - mcStack.pop_back(); - mcStack.push_back(msName); + if (mbInList && !mbInListItem) + { + setListItem("", true); + setListItem("", false); } - - copySource(syyText); msValue = sbuildValue; mbValuePresent = true; mbExpectValue = false; @@ -120,6 +114,7 @@ void convert_src::setText(char *syyText) msTextName = copySource(syyText); mbExpectValue = true; mbEnUs = false; + trim(msTextName); } @@ -129,6 +124,7 @@ void convert_src::setName(char *syyText) { std::string useText = copySource(syyText); + trim(useText); if (mbExpectName) { mbExpectName = false; @@ -149,8 +145,10 @@ void convert_src::setName(char *syyText) /********************** I M P L E M E N T A T I O N **********************/ void convert_src::setCmd(char *syyText) { - copySource(syyText); + msCmd = copySource(syyText); mbExpectName = true; + mbInList = false; + trim(msCmd); } @@ -158,12 +156,13 @@ void convert_src::setCmd(char *syyText) /********************** I M P L E M E N T A T I O N **********************/ void convert_src::setMacro(char *syyText) { - copySource(syyText); + msCmd = copySource(syyText); mbExpectName = mbExpectMacro = mbAutoPush = true; miMacroLevel = mcStack.size(); mcStack.push_back(""); + trim(msCmd); } @@ -171,19 +170,10 @@ void convert_src::setMacro(char *syyText /********************** I M P L E M E N T A T I O N **********************/ void convert_src::setList(char *syyText) { - msSaveTextName = msTextName = copySource(syyText); - miListCount = 0; -} - - - -/********************** I M P L E M E N T A T I O N **********************/ -void convert_src::setStringList(char *syyText) -{ - msSaveTextName = msTextName = copySource(syyText); - mbExpectStringList = true; - - miListCount = 0; + msCmd = copySource(syyText); + miListCount = 0; + mbInList = true; + trim(msCmd); } @@ -192,18 +182,14 @@ void convert_src::setStringList(char *sy void convert_src::setNL(char *syyText, bool bMacro) { int nL; - std::string sKey; - + std::string sKey, sObject; copySource(syyText); if (msTextName.size() && mbValuePresent && mbEnUs) { // locate key and extract it - sKey.clear(); - for (nL = 0; nL < (int)mcStack.size(); ++nL) - if (mcStack[nL].size()) - sKey += (sKey.size() ? "." : "") + mcStack[nL]; + buildKey(sKey); for (nL = -1;;) { @@ -220,7 +206,9 @@ void convert_src::setNL(char *syyText, b msValue.erase(nL,1); } - mcMemory.setEnUsKey(sKey, msTextName, msValue); + sObject = msCmd + "." + msTextName; + if (msValue.size() && msValue != "-") + mcMemory.setEnUsKey(miLineNo, sKey, sObject, msValue); } if (!bMacro && mbExpectMacro) @@ -259,8 +247,9 @@ void convert_src::stopBlock(char *syyTex // check for correct node/prop relations if (mcStack.size()) mcStack.pop_back(); - mbExpectStringList = false; - mbEnUs = false; + + mbInList = + mbEnUs = false; } @@ -269,25 +258,80 @@ void convert_src::stopBlock(char *syyTex void convert_src::setListItem(char *syyText, bool bIsStart) { copySource(syyText); - mbExpectStringList = false; if (bIsStart) { - msTextName = msSaveTextName; + if (!miListCount) + { + mcStack.pop_back(); + msName = "dummy"; + mcStack.push_back(msName); + } + msTextName = "item"; mbExpectValue = - mbExpectName = true; + mbExpectName = + mbInListItem = true; msName.clear(); } else { - std::stringstream ssBuf; + if (mbInListItem) + { + std::stringstream ssBuf; + std::string myKey; - mbExpectName = false; - mcStack.pop_back(); - ssBuf << ++miListCount; -// if (msName.size()) -// ssBuf << "." << msName; - msName = ssBuf.str(); - mcStack.push_back(msName); + + ++miListCount; + mcStack.pop_back(); + if (mbExpectName) + { + std::stringstream ssBuf; + + ssBuf << miListCount; + msName = "item" + ssBuf.str(); + } + mcStack.push_back(msName); + mbInListItem = + mbExpectName = false; + + // check key or add seq. + buildKey(myKey); + if (!mcMemory.checkKey(myKey, (msCmd + "." + msTextName))) + { + ssBuf << miListCount; + msName += ".uniq" + ssBuf.str(); + mcStack.pop_back(); + mcStack.push_back(msName); + } + } } } + + + +/********************** I M P L E M E N T A T I O N **********************/ +void convert_src::trim(std::string& sText) +{ + int nL; + + + while (sText[0] == ' ' || sText[0] == '\t') + sText.erase(0,1); + for (nL = sText.size(); sText[nL-1] == ' ' || sText[nL-1] == '\t'; --nL); + if (nL != (int)sText.size()) + sText.erase(nL); +} + + + +/********************** I M P L E M E N T A T I O N **********************/ +void convert_src::buildKey(std::string& sKey) +{ + int nL; + + + sKey.clear(); + for (nL = 0; nL < (int)mcStack.size(); ++nL) + if (mcStack[nL].size()) + sKey += (sKey.size() ? "." : "") + mcStack[nL]; +} Modified: openoffice/branches/l10n/main/l10ntools/source/gConSrclex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConSrclex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConSrclex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConSrclex.l Thu Feb 28 19:21:39 2013 @@ -36,7 +36,7 @@ #define YYLMAX 64000 /* change reader function (input) to our own version */ -#define YY_INPUT(buf,result,max_size) { IMPLptr->lexRead(buf, &result, max_size); } +#define YY_INPUT(buf,result,max_size) {IMPLptr->lexRead(buf, &result, max_size);} %} @@ -59,10 +59,10 @@ /*********************** H E L P E R M A C R O S ***********************/ %x CMD PRE ^[ \t]* -SUF [ \t\r\n] +SUF [ \t\r\n\\] SUFT [ \t\r\n\[] SPACE [ \t]* -IDENT ([a-zA-Z0-9_][ a-zA-Z0-9_\-\+\*(,&]*[a-zA-Z0-9)]|[a-zA-Z0-9_]) +IDENT ([(a-zA-Z0-9_][ a-zA-Z0-9_\-\+\*(,&]*[a-zA-Z0-9)_]|[a-zA-Z0-9_]) KEYID [a-zA-Z0-9_-]+ /******************* R U L E S D E F I N I T I O N S *******************/ @@ -74,17 +74,18 @@ KEYID [a-zA-Z0-9_-]+ int i = 1; for (;;) { - while ((yytext[++i] = yyinput()) != '*') ; - if ((yytext[++i] = yyinput()) == '/') - break; + while (yytext[i] != '*') + yytext[++i] = yyinput(); + yytext[++i] = yyinput(); + if (yytext[i] == '/') + break; } - yytext[i] = '\0'; + yytext[i+1] = '\0'; IMPLptr->copySource(yytext); } - "//".* { IMPLptr->copySource(yytext); } @@ -179,6 +180,7 @@ KEYID [a-zA-Z0-9_-]+ {PRE}[fF][iI][xX][eE][dD][tT][eE][xX][tT]{SUF} | {PRE}[fF][iI][xX][eE][dD][lL][iI][nN][eE]{SUF} | {PRE}[fF][lL][oO][aA][tT][iI][nN][gG][wW][iI][nN][dD][oO][wW]{SUF} | +{PRE}[gG][rR][oO][uU][pP][bB][oO][xX]{SUF} | {PRE}[hH][eE][lL][pP][bB][uU][tT][tT][oO][nN]{SUF} | {PRE}[iI][dD][lL][iI][sS][tT]{SUF} | {PRE}[iI][mM][aA][gG][eE]{SUF} | @@ -190,9 +192,11 @@ KEYID [a-zA-Z0-9_-]+ {PRE}[mM][eE][nN][uU]{SUF} | {PRE}[mM][eE][nN][uU][bB][uU][tT][tT][oO][nN]{SUF} | {PRE}[mM][eE][nN][uU][iI][tT][eE][mM]{SUF} | +{PRE}[mM][eE][sS][sS][bB][oO][xX]{SUF} | {PRE}[mM][eE][tT][rR][iI][cC][fF][iI][eE][lL][dD]{SUF} | {PRE}[mM][oO][dD][aA][lL][dD][iI][aA][lL][oO][gG]{SUF} | {PRE}[mM][oO][dD][eE][lL][eE][sS][sS][dD][iI][aA][lL][oO][gG]{SUF} | +{PRE}[mM][oO][rR][eE][bB][uU][tT][tT][oO][nN]{SUF} | {PRE}[mM][uU][lL][tT][iI][lL][iI][nN][eE][eE][dD][iI][tT]{SUF} | {PRE}[nN][uU][mM][eE][rR][iI][cC][fF][iI][eE][lL][dD]{SUF} | {PRE}[oO][kK][bB][uU][tT][tT][oO][nN]{SUF} | @@ -210,6 +214,7 @@ KEYID [a-zA-Z0-9_-]+ {PRE}[tT][aA][bB][cC][oO][nN][tT][rR][oO][lL]{SUF} | {PRE}[tT][aA][bB][dD][iI][aA][lL][oO][gG]{SUF} | {PRE}[tT][aA][bB][pP][aA][gG][eE]{SUF} | +{PRE}[tT][iI][mM][eE][fF][iI][eE][lL][dD]{SUF} | {PRE}[tT][oO][oO][lL][bB][oO][xX]{SUF} | {PRE}[tT][oO][oO][lL][bB][oO][xX][iI][tT][eE][mM]{SUF} | {PRE}[tT][rR][iI][sS][tT][aA][tT][eE][bB][oO][xX]{SUF} | @@ -230,20 +235,11 @@ KEYID [a-zA-Z0-9_-]+ IMPLptr->copySource(yytext); } -<CMD>"{" { - LOCptr->startBlock(yytext); +<CMD>.|\n|\r { + yyless(0); BEGIN(INITIAL); } -<CMD>[\\\r\n/] { - yyless(1); - BEGIN(INITIAL); -} - -<CMD>. { - IMPLptr->showError("gCon encountered a translation problem in .src module"); -} - {PRE}[hH][eE][lL][pP][iI][dD]{SUF} { @@ -253,7 +249,8 @@ KEYID [a-zA-Z0-9_-]+ -{PRE}[iI][dD][eE][nN][tT][iI][fF][iI][eE][rR]{SUF} { +{PRE}[sS][tT][yY][lL][eE][fF][aA][mM][iI][lL][yY]{SUF} | +{PRE}[iI][dD][eE][nN][tT][iI][fF][iI][eE][rR]{SUF} { yyless(strlen(yytext)-1); LOCptr->setId(yytext, true); } @@ -261,6 +258,7 @@ KEYID [a-zA-Z0-9_-]+ {PRE}[cC][uU][sS][tT][oO][mM][uU][nN][iI][tT][tT][eE][xX][tT]{SUFT} | +{PRE}[hH][eE][lL][pP][tT][eE][xX][tT]{SUFT} | {PRE}[mM][eE][sS][sS][aA][gG][eE]{SUFT} | {PRE}[qQ][uU][iI][cC][kK][hH][eE][lL][pP][tT][eE][xX][tT]{SUFT} | {PRE}[tT][eE][xX][tT]{SUFT} | @@ -271,6 +269,7 @@ KEYID [a-zA-Z0-9_-]+ +{PRE}[fF][iI][lL][tT][eE][rR][lL][iI][sS][tT]{SUFT} | {PRE}[iI][tT][eE][mM][lL][iI][sS][tT]{SUFT} | {PRE}[sS][tT][yY][lL][eE][fF][aA][mM][iI][lL][yY][lL][iI][sS][tT]{SUF} { yyless(strlen(yytext)-1); @@ -279,9 +278,10 @@ KEYID [a-zA-Z0-9_-]+ +{PRE}[pP][aA][iI][rR][eE][dD][lL][iI][sS][tT]{SUFT} | {PRE}[sS][tT][rR][iI][nN][gG][lL][iI][sS][tT]{SUFT} { yyless(strlen(yytext)-1); - LOCptr->setStringList(yytext); + LOCptr->setList(yytext); } Modified: openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx Thu Feb 28 19:21:39 2013 @@ -89,5 +89,5 @@ void convert_ulf::setValue(char *syyText nL = sText.rfind("\""); sText.erase(nL); - mcMemory.setEnUsKey(msKey, std::string("LngText"), sText); + mcMemory.setEnUsKey(miLineNo, msKey, std::string("LngText"), sText); } Modified: openoffice/branches/l10n/main/l10ntools/source/gConUlflex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConUlflex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConUlflex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConUlflex.l Thu Feb 28 19:21:39 2013 @@ -50,6 +50,7 @@ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ %option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 @@ -70,11 +71,13 @@ KEYID [a-zA-Z0-9_-]+ int i = 1; for (;;) { - while ((yytext[++i] = yyinput()) != '*') ; - if ((yytext[++i] = yyinput()) == '/') - break; + while (yytext[i] != '*') + yytext[++i] = yyinput(); + yytext[++i] = yyinput(); + if (yytext[i] == '/') + break; } - yytext[i] = '\0'; + yytext[i+1] = '\0'; IMPLptr->copySource(yytext); } Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx Thu Feb 28 19:21:39 2013 @@ -152,7 +152,7 @@ void convert_xcs::stopCollectData(char * } } else - mcMemory.setEnUsKey(sKey, std::string("dummy"), sText); + mcMemory.setEnUsKey(miLineNo, sKey, std::string("dummy"), sText); mbCollectingData = false; } Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcslex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcslex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXcslex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXcslex.l Thu Feb 28 19:21:39 2013 @@ -50,6 +50,7 @@ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ %option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcu.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcu.hxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXcu.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXcu.hxx Thu Feb 28 19:21:39 2013 @@ -48,6 +48,7 @@ class convert_xcu : public convert_gen_i void startCollectData(char *syyText); void stopCollectData(char *syyText); void copySpecial(char *syyText); + void copyNL(char *syyText); void addLevel(); private: Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx Thu Feb 28 19:21:39 2013 @@ -136,6 +136,15 @@ void convert_xcu::stopCollectData(char * if (mbNoCollectingData) return; + // remove any newline + for (nL = 0;;) + { + nL = useText.find("\n"); + if (nL == (int)std::string::npos) + break; + useText.erase(nL,1); + } + mbNoCollectingData = true; // locate key and extract it @@ -158,7 +167,8 @@ void convert_xcu::stopCollectData(char * } } else - mcMemory.setEnUsKey(useKey, "value", useText); + if (useText.size()) + mcMemory.setEnUsKey(miLineNo, useKey, "value", useText); } @@ -188,6 +198,21 @@ void convert_xcu::copySpecial(char *syyT /********************** I M P L E M E N T A T I O N **********************/ +void convert_xcu::copyNL(char *syyText) +{ + int nX = msCollector.size(); + std::string sText = copySource(syyText, mbNoCollectingData); + + if (!mbNoCollectingData) + { + msCollector.erase(nX); + msCollector += ' '; + } +} + + + +/********************** I M P L E M E N T A T I O N **********************/ void convert_xcu::addLevel() { ++miLevel; Modified: openoffice/branches/l10n/main/l10ntools/source/gConXculex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXculex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXculex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXculex.l Thu Feb 28 19:21:39 2013 @@ -50,6 +50,7 @@ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ %option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 @@ -115,10 +116,17 @@ FIN [^/>]*">" -.|\n { +({SPACE}\n{SPACE})+ { + LOCptr->copyNL(yytext); +} + + + +. { IMPLptr->copySource(yytext, LOCptr->mbNoCollectingData); } + %% Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx Thu Feb 28 19:21:39 2013 @@ -222,7 +222,7 @@ void convert_xhp::closeTransTag(char *yy if (meExpectValue == VALUE_IS_VALUE || meExpectValue == VALUE_IS_VALUE_TAG) { if (msCollector.size() && msCollector != "-") - mcMemory.setEnUsKey(msKey, std::string("text"), msCollector); + mcMemory.setEnUsKey(miLineNo, msKey, std::string("text"), msCollector); msKey.clear(); } copySource(yytext); Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l Thu Feb 28 19:21:39 2013 @@ -50,6 +50,7 @@ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ %option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 Modified: openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx Thu Feb 28 19:21:39 2013 @@ -147,7 +147,7 @@ void convert_xrm::stopCollectData(char * if (!mbNoCollectingData) { msKey = msKey + "." + msKey; - mcMemory.setEnUsKey(msKey, std::string("text"), msCollector); + mcMemory.setEnUsKey(miLineNo, msKey, std::string("text"), msCollector); mbNoCollectingData = true; msKey.clear(); } Modified: openoffice/branches/l10n/main/l10ntools/source/gConXrmlex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXrmlex.l?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXrmlex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXrmlex.l Thu Feb 28 19:21:39 2013 @@ -50,6 +50,7 @@ /* yyclass= --> subClass yyFlexLexer to allow own functions */ /* c++ --> generate C++ classes */ %option 8bit noyywrap never-interactive +%array %p 24000 %e 1200 %n 500 Modified: openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx Thu Feb 28 19:21:39 2013 @@ -211,8 +211,6 @@ void handler::run() /********************** I M P L E M E N T A T I O N **********************/ void handler::runExtractMerge(bool bMerge) { - bool bDoNotSave = false; - // prepare translation memory to module type mcMemory.setModuleName(msModuleName); @@ -229,13 +227,10 @@ void handler::runExtractMerge(bool bMerg // get converter and extract files convert_gen convertObj(msSourceDir + *siSource, mcMemory, bMerge); convertObj.execute(); - if (!bDoNotSave) - bDoNotSave = convertObj.isError(); } // and generate language file - if (!bDoNotSave) - mcMemory.save(msTargetDir + msModuleName); + mcMemory.save(msTargetDir + msModuleName); } Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx Thu Feb 28 19:21:39 2013 @@ -20,7 +20,9 @@ *************************************************************/ #include "gLang.hxx" #include <algorithm> +#include <iostream> #include <fstream> +#include <sstream> @@ -58,6 +60,9 @@ l10nMem_entry::~l10nMem_entry() /********************** I M P L E M E N T A T I O N **********************/ l10nMem::l10nMem() + : mbInError(false), + miStartInx(0), + miLastUniqResort(0) { } @@ -71,10 +76,53 @@ l10nMem::~l10nMem() /********************** I M P L E M E N T A T I O N **********************/ +std::string l10nMem::showError(int iLineNo, char *sText, bool bWarning) +{ + if (!bWarning) + mbInError = true; + + std::cerr << "ERROR in " << msCurrentSourceFileName << ":" << iLineNo << ": " << sText << std::endl; + return "ERROR"; +} + + + +/********************** I M P L E M E N T A T I O N **********************/ +bool l10nMem::isError() +{ + return mbInError; +} + + + +/********************** I M P L E M E N T A T I O N **********************/ +bool l10nMem::checkKey(const std::string& sKey, const std::string& sObjectType) +{ + int i; + + for (i = miStartInx; i < (int)mcMemory.size(); ++i) + if (mcMemory[i].msModuleName == msCurrentModuleName && + mcMemory[i].msSourceFile == msCurrentSourceFileName && + mcMemory[i].msObjectType == sObjectType && + mcMemory[i].msKey == sKey ) + return false; + return true; +} + + + +/********************** I M P L E M E N T A T I O N **********************/ void l10nMem::save(const std::string& srTargetFile) { - int i, nL; + int i; std::string sFile = srTargetFile + ".cnv"; + + if (mbInError) + { + showError(0, (char *)"Cannot save file due to preceding errors"); + return; + } + std::ofstream outputFile(sFile.c_str(), std::ios::binary); if (!outputFile.is_open()) @@ -107,6 +155,7 @@ void l10nMem::clear() void l10nMem::setFileName(const std::string& srSourceFile) { msCurrentSourceFileName = srSourceFile; + miStartInx = mcMemory.size(); // modify to please current sdf format std::replace(msCurrentSourceFileName.begin(), msCurrentSourceFileName.end(), '/', '\\' ); @@ -123,11 +172,21 @@ void l10nMem::setModuleName(const std::s /********************** I M P L E M E N T A T I O N **********************/ -void l10nMem::setEnUsKey(const std::string& srKey, const std::string& srObjectType, const std::string& srText, int iIndex) +void l10nMem::setEnUsKey(int iLineNo, const std::string& srKey, const std::string& srObjectType, const std::string& srText, int iIndex) { std::string baseLanguage = "en-US"; + std::string myKey = srKey; + + if (!checkKey(srKey, srObjectType)) + { + std::stringstream ssBuf; + + ++miLastUniqResort; + ssBuf << miLastUniqResort; + myKey += ".globUniq" + ssBuf.str(); + } mcMemory.push_back(l10nMem_entry(msCurrentSourceFileName, msCurrentModuleName, - srKey, srObjectType, baseLanguage, srText, iIndex)); + myKey, srObjectType, baseLanguage, srText, iIndex)); } Modified: openoffice/branches/l10n/main/l10ntools/source/gLang.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gLang.hxx?rev=1451299&r1=1451298&r2=1451299&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gLang.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gLang.hxx Thu Feb 28 19:21:39 2013 @@ -68,11 +68,17 @@ class l10nMem l10nMem(); ~l10nMem(); - void save (const std::string& srTargetFile); - void clear(); - void setFileName (const std::string& srSourceFile); - void setModuleName(const std::string& srModuleName); - void setEnUsKey (const std::string& srKey, const std::string& srObjectType, const std::string& srText, int iIndex = 0); + std::string showError (int iLineNo, char *sText, bool bWarning = false); + bool isError (); + bool checkKey (const std::string& sKey, + const std::string& sObjectType); + void save (const std::string& srTargetFile); + void clear(); + void setFileName (const std::string& srSourceFile); + void setModuleName (const std::string& srModuleName); + void setEnUsKey (int iLineNo,const std::string& srKey, + const std::string& srObjectType, + const std::string& srText, int iIndex = 0); std::vector<l10nMem_entry *>& getLanguagesForKey(const std::string& srKey); private: @@ -80,6 +86,9 @@ class l10nMem std::string msCurrentSourceFileName; std::vector<l10nMem_entry *> mcCurrentSelection; std::vector<l10nMem_entry> mcMemory; + bool mbInError; + int miStartInx; + int miLastUniqResort; }; @@ -93,7 +102,6 @@ class convert_gen // do extract/merge void execute(); - bool isError(); };