Author: jani Date: Sat Mar 23 11:24:37 2013 New Revision: 1460128 URL: http://svn.apache.org/r1460128 Log: prepare for merging of xhp files (needs to write a file pr language)
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/gConXhp.hxx openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.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=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gCon.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gCon.cxx Sat Mar 23 11:24:37 2013 @@ -92,12 +92,12 @@ convert_gen::~convert_gen() /********************** I M P L E M E N T A T I O N **********************/ -bool convert_gen::execute(const bool bMerge, const bool bLoadMode, const bool bAllowNoFile) +bool convert_gen::execute(const bool bMerge) { convert_gen_impl::mcImpl->mbMergeMode = bMerge; // and load file - if (!convert_gen_impl::mcImpl->prepareFile(bLoadMode, bAllowNoFile)) + if (!convert_gen_impl::mcImpl->prepareFile()) return false; // and execute conversion @@ -143,6 +143,7 @@ void convert_gen_impl::save(const std::s { std::string x; + x = sFileName; x = sKey; x = sENUStext; x = sText; @@ -166,7 +167,9 @@ void convert_gen_impl::endSave() /********************** I M P L E M E N T A T I O N **********************/ convert_gen_impl::convert_gen_impl(l10nMem& crMemory) - : mcMemory(crMemory), + : mbMergeMode(false), + mbLoadMode(false), + mcMemory(crMemory), miLineNo(1) { } @@ -182,14 +185,14 @@ convert_gen_impl::~convert_gen_impl() /********************** I M P L E M E N T A T I O N **********************/ -bool convert_gen_impl::prepareFile(bool bLoadMode, bool bAllowNoFile) +bool convert_gen_impl::prepareFile() { std::ifstream inputFile(msSourcePath.c_str(), std::ios::binary); if (!inputFile.is_open()) { - if (bAllowNoFile) + if (mbLoadMode) { l10nMem::showWarning("Cannot open file (" + msSourcePath + ")"); return false; @@ -210,7 +213,7 @@ bool convert_gen_impl::prepareFile(bool throw l10nMem::showError("cannot read whole file"); inputFile.close(); - if (mbMergeMode && !bLoadMode) + if (mbMergeMode && !mbLoadMode) { // close previous file if (outputFile.is_open()) @@ -263,7 +266,8 @@ void convert_gen_impl::writeSourceFile(c if (!line.size()) return; - outputFile.write(line.c_str(), line.size()); + if (outputFile.is_open()) + outputFile.write(line.c_str(), line.size()); } Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gCon.hxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gCon.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gCon.hxx Sat Mar 23 11:24:37 2013 @@ -65,6 +65,7 @@ class convert_gen_impl // generic variables bool mbMergeMode; + bool mbLoadMode; std::string msSourcePath; std::string msTargetPath; std::string msSourceFile; @@ -74,15 +75,15 @@ class convert_gen_impl // utility functions for converters - void lexRead (char *sBuf, int *nResult, int nMax_size); + void lexRead (char *sBuf, int *nResult, int nMax_size); void writeSourceFile(const std::string& line); - std::string& copySource(char *yyText, bool bDoClear = true); + std::string& copySource (char *yyText, bool bDoClear = true); protected: std::string msSourceBuffer, msCopyText; int miSourceReadIndex; - bool prepareFile(bool bLoadMode, bool bAllowNoFile); + bool prepareFile(); private: std::ofstream outputFile; Modified: openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx Sat Mar 23 11:24:37 2013 @@ -40,6 +40,8 @@ convert_po::convert_po(l10nMem& crMemory mbExpectStr(false), mbFuzzy(false) { + // Po files are handled special + mbLoadMode = true; } Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhp.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhp.hxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXhp.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXhp.hxx Sat Mar 23 11:24:37 2013 @@ -33,6 +33,20 @@ /******************** C L A S S D E F I N I T I O N ********************/ +class lang_container +{ + public: + lang_container(const std::string& sLang, const std::string& sFileName); + lang_container(); + ~lang_container(); + + std::string msLang; +// std::ofstream msOutFile; +}; + + + +/******************** C L A S S D E F I N I T I O N ********************/ class convert_xhp : public convert_gen_impl { public: @@ -53,19 +67,21 @@ class convert_xhp : public convert_gen_i void handleSpecial(char *yytext); void handleDataEnd(char *yytext); void duplicate(char *yytext); - std::string& copySourceWithCollector(char *yytext); + std::string& copySourceSpecial(char *yytext, int iType = 0); private: - enum + typedef enum { VALUE_NOT_USED, VALUE_IS_TAG, VALUE_IS_TAG_TRANS, VALUE_IS_VALUE, VALUE_IS_VALUE_TAG - } meExpectValue, mePushValue; + } STATE; + STATE meExpectValue, mePushValue; std::string msKey, msPushCollect; - void execute(); + std::vector<lang_container> mbLanguages; + void execute(); }; #endif Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx Sat Mar 23 11:24:37 2013 @@ -35,10 +35,40 @@ /************ I N T E R F A C E I M P L E M E N T A T I O N ************/ +lang_container::lang_container(const std::string& sLang, const std::string& sFileName) +{ + std::string x; + + x= sLang; + x= sFileName; + // JIX: implement file open + // JIX: implement lang tag +} + + + +/************ I N T E R F A C E I M P L E M E N T A T I O N ************/ +lang_container::lang_container() +{ +} + + + +/************ I N T E R F A C E I M P L E M E N T A T I O N ************/ +lang_container::~lang_container() +{ + // JIX: implement close file +} + + + +/************ I N T E R F A C E I M P L E M E N T A T I O N ************/ convert_xhp::convert_xhp(l10nMem& crMemory) : convert_gen_impl(crMemory), meExpectValue(VALUE_NOT_USED) { + // xhp files are written through a local routine + mbLoadMode = true; } @@ -62,10 +92,15 @@ namespace XhpWrap /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::execute() { - XhpWrap::yylex(); + std::string sLang; + std::string sFile = msTargetPath+msSourceFile; + + // prepare list with languages + mcMemory.prepareMerge(); + for (; mcMemory.getLangList(sLang); ) + mbLanguages.push_back(lang_container(sLang, sFile)); - if (mbMergeMode) - writeSourceFile(msCollector); + XhpWrap::yylex(); } @@ -73,7 +108,7 @@ void convert_xhp::execute() /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::setString(char *yytext) { - copySourceWithCollector(yytext); + copySourceSpecial(yytext); } @@ -86,7 +121,7 @@ void convert_xhp::openTag(char *yytext) meExpectValue = VALUE_IS_VALUE_TAG; msCollector += "\\"; } - copySourceWithCollector(yytext); + copySourceSpecial(yytext); } @@ -94,27 +129,30 @@ void convert_xhp::openTag(char *yytext) /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::closeTag(char *yytext) { - copySourceWithCollector(yytext); + STATE newState = meExpectValue; + switch (meExpectValue) { case VALUE_IS_VALUE_TAG: - meExpectValue = VALUE_IS_VALUE; - msCollector.insert(msCollector.size()-1, "\\"); + newState = VALUE_IS_VALUE; + msCollector += "\\"; break; case VALUE_IS_TAG_TRANS: if (msKey.size()) - meExpectValue = VALUE_IS_VALUE; + newState = VALUE_IS_VALUE; break; case VALUE_IS_TAG: msKey.clear(); - meExpectValue = VALUE_NOT_USED; + newState = VALUE_NOT_USED; break; case VALUE_NOT_USED: case VALUE_IS_VALUE: break; } + copySourceSpecial(yytext); + meExpectValue = newState; } @@ -122,8 +160,8 @@ void convert_xhp::closeTag(char *yytext) /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::setId(char *yytext) { - int nL, nE, nX = msCollector.size(); - std::string& sText = copySourceWithCollector(yytext); + int nL, nE; + std::string& sText = copySourceSpecial(yytext); nL = sText.find("\""); @@ -152,7 +190,7 @@ void convert_xhp::setLang(char *yytext) { int nL, nE; std::string sLang; - std::string& sText = copySourceWithCollector(yytext); + std::string& sText = copySourceSpecial(yytext, 1); nL = sText.find("\""); @@ -186,8 +224,8 @@ void convert_xhp::setLang(char *yytext) /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::setRef(char *yytext) { - int nL, nE, nX = msCollector.size(); - std::string& sText = copySourceWithCollector(yytext); + int nL, nE; + std::string& sText = copySourceSpecial(yytext); nL = sText.find("\""); @@ -214,7 +252,7 @@ void convert_xhp::setRef(char *yytext) /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::openTransTag(char *yytext) { - copySource(yytext); + copySourceSpecial(yytext); msKey.clear(); meExpectValue = VALUE_IS_TAG; } @@ -230,8 +268,8 @@ void convert_xhp::closeTransTag(char *yy mcMemory.setSourceKey(miLineNo, msSourceFile, msKey, msCollector); msKey.clear(); } - copySource(yytext); meExpectValue = VALUE_NOT_USED; + copySourceSpecial(yytext, 2); } @@ -239,7 +277,7 @@ void convert_xhp::closeTransTag(char *yy /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::stopTransTag(char *yytext) { - copySource(yytext); + copySourceSpecial(yytext); meExpectValue = VALUE_NOT_USED; } @@ -251,7 +289,7 @@ void convert_xhp::startComment(char *yyt mePushValue = meExpectValue; msPushCollect = msCollector; meExpectValue = VALUE_NOT_USED; - copySource(yytext); + copySourceSpecial(yytext); } @@ -259,7 +297,7 @@ void convert_xhp::startComment(char *yyt /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::stopComment(char *yytext) { - copySource(yytext); + copySourceSpecial(yytext); meExpectValue = mePushValue; msCollector = msPushCollect; } @@ -270,7 +308,7 @@ void convert_xhp::stopComment(char *yyte void convert_xhp::handleSpecial(char *yytext) { int nX = msCollector.size(); - std::string& sText = copySourceWithCollector(yytext); + std::string& sText = copySourceSpecial(yytext); if (meExpectValue != VALUE_IS_VALUE || meExpectValue != VALUE_IS_VALUE_TAG) @@ -293,7 +331,7 @@ void convert_xhp::handleSpecial(char *yy void convert_xhp::handleDataEnd(char *yytext) { int nX = msCollector.size(); - copySourceWithCollector(yytext); + copySourceSpecial(yytext); if (meExpectValue == VALUE_IS_VALUE || meExpectValue == VALUE_IS_VALUE_TAG) msCollector.erase(nX); @@ -304,7 +342,7 @@ void convert_xhp::handleDataEnd(char *yy /********************** I M P L E M E N T A T I O N **********************/ void convert_xhp::duplicate(char *yytext) { - copySourceWithCollector(yytext); + copySourceSpecial(yytext); if (meExpectValue == VALUE_IS_VALUE || meExpectValue == VALUE_IS_VALUE_TAG) msCollector += msCollector[msCollector.size()-1]; @@ -313,7 +351,12 @@ void convert_xhp::duplicate(char *yytext /********************** I M P L E M E N T A T I O N **********************/ -std::string& convert_xhp::copySourceWithCollector(char *yytext) +std::string& convert_xhp::copySourceSpecial(char *yytext, int iType) { - return copySource(yytext, (meExpectValue == VALUE_NOT_USED || meExpectValue == VALUE_IS_TAG_TRANS)); + iType = 0; + return copySource(yytext, (meExpectValue != VALUE_IS_VALUE && meExpectValue != VALUE_IS_VALUE_TAG)); + + + // JIX tell copy source not to use outputfile + // JIX write all languages sources. } Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l (original) +++ openoffice/branches/l10n/main/l10ntools/source/gConXhplex.l Sat Mar 23 11:24:37 2013 @@ -154,7 +154,7 @@ IDENT [\.a-zA-Z0-9_-]+ .|\n { - LOCptr->copySourceWithCollector(yytext); + LOCptr->copySourceSpecial(yytext); } Modified: openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx Sat Mar 23 11:24:37 2013 @@ -278,9 +278,7 @@ void handler::runExtractMerge(bool bMerg // get converter and extract file convert_gen convertObj(mcMemory, msSourceDir, msTargetDir, *siSource); - convertObj.execute(bMerge, false, false); - - //JIX runExtractMerge, handle merge + convertObj.execute(bMerge); } // and generate language file @@ -308,7 +306,7 @@ void handler::runConvert() // get converter and extract files convert_gen convertObj(mcMemory, sFilePath, msTargetDir, *siSource); - convertObj.execute(true, true, true); + convertObj.execute(true); } } @@ -454,7 +452,7 @@ void handler::loadL10MEM() // and load file mcMemory.setLanguage("", true, false); - convert_gen (mcMemory, sLoad, msTargetDir, sMod).execute(false, true, true); + convert_gen (mcMemory, sLoad, msTargetDir, sMod).execute(false); } // loop through all languages and load text @@ -468,7 +466,7 @@ void handler::loadL10MEM() // tell system l10nMem::showDebug("gLang loading text from language file " + sLoad + sMod); - convert_gen(mcMemory, sLoad, msTargetDir, sMod).execute(false, true, true); + convert_gen(mcMemory, sLoad, msTargetDir, sMod).execute(false); } } Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx Sat Mar 23 11:24:37 2013 @@ -101,6 +101,8 @@ void l10nMem::dumpMem(const std::string& { l10nMem_impl::mcImpl->dumpMem(sT); } bool l10nMem::getMergeLang(std::string& sL, std::string& sT) { return l10nMem_impl::mcImpl->mcDb.getMergeLang(sL, sT); } +bool l10nMem::getLangList(std::string& sL) + { return l10nMem_impl::mcImpl->mcDb.getLangList(sL); } Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx Sat Mar 23 11:24:37 2013 @@ -132,7 +132,7 @@ class l10nMem_db void prepareMerge (); bool getMergeLang (std::string& sLang, std::string& sText); - + bool getLangList (std::string& sLang); }; Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx Sat Mar 23 11:24:37 2013 @@ -398,10 +398,10 @@ void l10nMem_db::prepareMerge() /********************** I M P L E M E N T A T I O N **********************/ bool l10nMem_db::getMergeLang(std::string& sLang, - std::string& sText) + std::string& sText) { miCurLangInx++; - if (miCurLangInx >= mcLangList.size()) + if (miCurLangInx >= (int)mcLangList.size()) return false; // update pointers @@ -409,3 +409,17 @@ bool l10nMem_db::getMergeLang(std::strin sText = mcENUSlist[miCurENUSinx].mcLangList[miCurLangInx].msText; return true; } + + + +/********************** I M P L E M E N T A T I O N **********************/ +bool l10nMem_db::getLangList(std::string& sLang) +{ + miCurLangInx++; + if (miCurLangInx >= (int)mcLangList.size()) + return false; + + // update pointers + sLang = mcLangList[miCurLangInx]; + return true; +} Modified: openoffice/branches/l10n/main/l10ntools/source/gLang.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gLang.hxx?rev=1460128&r1=1460127&r2=1460128&view=diff ============================================================================== --- openoffice/branches/l10n/main/l10ntools/source/gLang.hxx (original) +++ openoffice/branches/l10n/main/l10ntools/source/gLang.hxx Sat Mar 23 11:24:37 2013 @@ -90,6 +90,7 @@ class l10nMem void prepareMerge (); bool getMergeLang (std::string& sLang, std::string& sText); + bool getLangList (std::string& sLang); }; @@ -105,9 +106,7 @@ class convert_gen ~convert_gen(); // do extract/merge - bool execute(const bool bMerge, - const bool bLoadMode, - const bool bAllowNoFile); + bool execute(const bool bMerge); // ONLY po should implement these functions void startSave(const std::string& sLanguage,