From 161f4ac95ae3df1daaede762862ea1c3ac4bb399 Mon Sep 17 00:00:00 2001 From: Zolnai Tamás Date: Mon, 10 Sep 2012 20:31:38 +0200 Subject: Use po file for merge 1. step Make executables to waiting for po as input Add some function to po files Rewrite makefiles to use po files for merge Change KeyId generator not to use xml special charachters One filetype remain: properties Change-Id: If2bd2ae7afc61518c2d838a3cae301ef62dd9761 Reviewed-on: https://gerrit.libreoffice.org/593 Reviewed-by: Michael Stahl Tested-by: Michael Stahl --- l10ntools/Executable_ulfex.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'l10ntools/Executable_ulfex.mk') diff --git a/l10ntools/Executable_ulfex.mk b/l10ntools/Executable_ulfex.mk index e82c9b8ee812..f3fd559ac4f7 100644 --- a/l10ntools/Executable_ulfex.mk +++ b/l10ntools/Executable_ulfex.mk @@ -33,6 +33,7 @@ $(eval $(call gb_Executable_set_include,ulfex,\ $(eval $(call gb_Executable_use_libraries,ulfex,\ sal \ + i18nregexp \ )) $(eval $(call gb_Executable_use_static_libraries,ulfex,\ -- cgit v1.2.3 From 7429ab2e2caa49466a455ad3e2e04057524225d0 Mon Sep 17 00:00:00 2001 From: Zolnai Tamás Date: Mon, 19 Nov 2012 18:19:52 +0100 Subject: Use icu regex in l10ntools instead of i18nregexp Change-Id: I9062aafa2fefa26b7b1edf0440f4675b2f469e5d --- l10ntools/Executable_cfgex.mk | 6 +++- l10ntools/Executable_helpex.mk | 3 +- l10ntools/Executable_localize.mk | 6 +++- l10ntools/Executable_propex.mk | 6 +++- l10ntools/Executable_renewpo.mk | 6 +++- l10ntools/Executable_transex3.mk | 6 +++- l10ntools/Executable_treex.mk | 3 +- l10ntools/Executable_uiex.mk | 3 +- l10ntools/Executable_ulfex.mk | 6 +++- l10ntools/Executable_xrmex.mk | 3 +- l10ntools/prj/build.lst | 2 +- l10ntools/source/po.cxx | 77 ++++++++++++++-------------------------- 12 files changed, 65 insertions(+), 62 deletions(-) (limited to 'l10ntools/Executable_ulfex.mk') diff --git a/l10ntools/Executable_cfgex.mk b/l10ntools/Executable_cfgex.mk index 7804470c05a7..60b31669c25c 100644 --- a/l10ntools/Executable_cfgex.mk +++ b/l10ntools/Executable_cfgex.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,cfgex,\ $(eval $(call gb_Executable_use_libraries,cfgex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_unpacked,cfgex,boost)) @@ -50,4 +49,9 @@ $(eval $(call gb_Executable_add_exception_objects,cfgex,\ l10ntools/source/cfgmerge \ )) +$(eval $(call gb_Executable_use_externals,cfgex,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/Executable_helpex.mk b/l10ntools/Executable_helpex.mk index b7e63100b351..cd2469dc971b 100644 --- a/l10ntools/Executable_helpex.mk +++ b/l10ntools/Executable_helpex.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,helpex,\ $(eval $(call gb_Executable_use_libraries,helpex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_external,helpex,expat_utf8)) @@ -51,6 +50,8 @@ $(eval $(call gb_Executable_add_exception_objects,helpex,\ $(eval $(call gb_Executable_use_externals,helpex,\ libxml2 \ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ )) # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/Executable_localize.mk b/l10ntools/Executable_localize.mk index e6e7f1fc2c6e..a810b6cd8e22 100644 --- a/l10ntools/Executable_localize.mk +++ b/l10ntools/Executable_localize.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,localize,\ $(eval $(call gb_Executable_use_libraries,localize,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_static_libraries,localize,\ @@ -44,4 +43,9 @@ $(eval $(call gb_Executable_add_exception_objects,localize,\ l10ntools/source/localize \ )) +$(eval $(call gb_Executable_use_externals,localize,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/Executable_propex.mk b/l10ntools/Executable_propex.mk index d8dc16d323c2..06080c682840 100644 --- a/l10ntools/Executable_propex.mk +++ b/l10ntools/Executable_propex.mk @@ -17,7 +17,6 @@ $(eval $(call gb_Executable_set_include,propex,\ $(eval $(call gb_Executable_use_libraries,propex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_static_libraries,propex,\ @@ -29,4 +28,9 @@ $(eval $(call gb_Executable_add_exception_objects,propex,\ l10ntools/source/propex \ )) +$(eval $(call gb_Executable_use_externals,propex,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim: set noet sw=4 ts=4: diff --git a/l10ntools/Executable_renewpo.mk b/l10ntools/Executable_renewpo.mk index 5aa036a40100..db84a41ae5d7 100644 --- a/l10ntools/Executable_renewpo.mk +++ b/l10ntools/Executable_renewpo.mk @@ -18,7 +18,6 @@ $(eval $(call gb_Executable_set_include,renewpo,\ $(eval $(call gb_Executable_use_libraries,renewpo,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_static_libraries,renewpo,\ @@ -29,4 +28,9 @@ $(eval $(call gb_Executable_add_exception_objects,renewpo,\ l10ntools/source/renewpo \ )) +$(eval $(call gb_Executable_use_externals,renewpo,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim: set noet sw=4 ts=4: diff --git a/l10ntools/Executable_transex3.mk b/l10ntools/Executable_transex3.mk index 2d9590641d83..d2b7952f0372 100644 --- a/l10ntools/Executable_transex3.mk +++ b/l10ntools/Executable_transex3.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,transex3,\ $(eval $(call gb_Executable_use_libraries,transex3,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_add_scanners,transex3,\ @@ -50,4 +49,9 @@ $(eval $(call gb_Executable_add_exception_objects,transex3,\ l10ntools/source/export \ )) +$(eval $(call gb_Executable_use_externals,transex3,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/Executable_treex.mk b/l10ntools/Executable_treex.mk index 41af0a8bfbc9..af77c71a1546 100644 --- a/l10ntools/Executable_treex.mk +++ b/l10ntools/Executable_treex.mk @@ -17,7 +17,6 @@ $(eval $(call gb_Executable_set_include,treex,\ $(eval $(call gb_Executable_use_libraries,treex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_static_libraries,treex,\ @@ -31,6 +30,8 @@ $(eval $(call gb_Executable_add_exception_objects,treex,\ $(eval $(call gb_Executable_use_externals,treex,\ libxml2 \ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ )) # vim: set noet sw=4 ts=4: diff --git a/l10ntools/Executable_uiex.mk b/l10ntools/Executable_uiex.mk index 520b010265f0..de8d0c83a4d6 100644 --- a/l10ntools/Executable_uiex.mk +++ b/l10ntools/Executable_uiex.mk @@ -16,7 +16,6 @@ $(eval $(call gb_Executable_set_include,uiex,\ $(eval $(call gb_Executable_use_libraries,uiex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_unpacked,uiex,boost)) @@ -33,6 +32,8 @@ $(eval $(call gb_Executable_use_externals,uiex,\ libexslt \ libxml2 \ libxslt \ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ )) # vim: set noet sw=4 ts=4: diff --git a/l10ntools/Executable_ulfex.mk b/l10ntools/Executable_ulfex.mk index b975f5c47e11..9a7040a6ff9e 100644 --- a/l10ntools/Executable_ulfex.mk +++ b/l10ntools/Executable_ulfex.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,ulfex,\ $(eval $(call gb_Executable_use_libraries,ulfex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_unpacked,ulfex,boost)) @@ -47,4 +46,9 @@ $(eval $(call gb_Executable_add_exception_objects,ulfex,\ l10ntools/source/lngex \ )) +$(eval $(call gb_Executable_use_externals,ulfex,\ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ +)) + # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/Executable_xrmex.mk b/l10ntools/Executable_xrmex.mk index 73c56abe420a..ea0810fc3a53 100644 --- a/l10ntools/Executable_xrmex.mk +++ b/l10ntools/Executable_xrmex.mk @@ -33,7 +33,6 @@ $(eval $(call gb_Executable_set_include,xrmex,\ $(eval $(call gb_Executable_use_libraries,xrmex,\ sal \ - i18nregexp \ )) $(eval $(call gb_Executable_use_unpacked,xrmex,boost)) @@ -52,6 +51,8 @@ $(eval $(call gb_Executable_add_exception_objects,xrmex,\ $(eval $(call gb_Executable_use_externals,xrmex,\ libxml2 \ + icuuc \ + $(if $(filter MSC,$(COM)),icuin,icui18n) \ )) # vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/l10ntools/prj/build.lst b/l10ntools/prj/build.lst index 888b2343a4b5..af0fdfeff475 100644 --- a/l10ntools/prj/build.lst +++ b/l10ntools/prj/build.lst @@ -1,3 +1,3 @@ -tr l10ntools : EXPAT:expat LIBXSLT:libxslt sal regexp NULL +tr l10ntools : EXPAT:expat LIBXSLT:libxslt ICU:icu sal NULL tr l10ntools usr1 - all tr_mkout NULL tr l10ntools\prj nmake - all tr_prj NULL diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx index 648634c2f569..1be60ecaf312 100644 --- a/l10ntools/source/po.cxx +++ b/l10ntools/source/po.cxx @@ -7,10 +7,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include -#include -#include -#include #include #include @@ -21,12 +17,15 @@ #include #include +#include #include "po.hxx" #define POESCAPED OString("\\n\\t\\r\\\\\\\"") #define POUNESCAPED OString("\n\t\r\\\"") +using namespace U_ICU_NAMESPACE; + //Class GenPoEntry class GenPoEntry @@ -317,61 +316,37 @@ namespace return lcl_UnEscapeText(rText,"\\n\\t\\r","\n\t\r"); } - //Miminize the length of the regular expression result - static void lcl_Minimize( - const OUString& rText, Regexpr& io_rRegExp, re_registers& io_rRegs ) - { - re_registers aPrevRegs; - const sal_Int32 nStart = io_rRegs.start[0]; - do - { - const OUString sTemp = rText.copy(0,io_rRegs.end[0]-1); - memcpy( - static_cast(&aPrevRegs), - static_cast(&io_rRegs), - sizeof(re_registers)); - memset(static_cast(&io_rRegs), 0, sizeof(re_registers)); - io_rRegExp.set_line(sTemp.getStr(),sTemp.getLength()); - io_rRegExp.re_search(&io_rRegs,nStart); - } while(io_rRegs.num_of_match); - - memcpy(static_cast(&io_rRegs),static_cast(&aPrevRegs), - sizeof(re_registers)); - io_rRegExp.set_line(rText.getStr(),rText.getLength()); - } - //Find all special tag in a string using a regular expression static void lcl_FindAllTag( const OString& rText,std::vector& o_vFoundTags ) { - ::com::sun::star::util::SearchOptions aOptions; - aOptions.algorithmType = - ::com::sun::star::util::SearchAlgorithms_REGEXP; - aOptions.searchFlag = - ::com::sun::star::util::SearchFlags::NORM_WORD_ONLY; - aOptions.searchString = "<[/]?[a-z_\\-]+(| +[a-z]+=\".*\") *[/]?>"; - ::com::sun::star::uno::Reference< - ::com::sun::star::i18n::XExtendedTransliteration > xTrans; - - Regexpr aRegExp(aOptions,xTrans); - const OUString sTemp(OStringToOUString(rText,RTL_TEXTENCODING_UTF8)); - aRegExp.set_line(sTemp.getStr(),sTemp.getLength()); - - re_registers aRegs; - memset(static_cast(&aRegs), 0, sizeof(re_registers)); - sal_Int32 nStart = 0; - o_vFoundTags.resize(0); - aRegExp.re_search(&aRegs,nStart); - while(aRegs.num_of_match) + + UErrorCode nIcuErr = U_ZERO_ERROR; + sal_uInt32 nSearchFlags = UREGEX_DOTALL | UREGEX_CASE_INSENSITIVE; + OUString sLocaleText( OStringToOUString(rText,RTL_TEXTENCODING_UTF8) ); + OUString sPattern( "<[/]??[a-z_-]+?(?:| +[a-z]+?=\".*?\") *[/]??>" ); + UnicodeString sSearchPat( + reinterpret_cast( + sPattern.getStr()), sPattern.getLength() ); + UnicodeString sSource( + reinterpret_cast( + sLocaleText.getStr()), sLocaleText.getLength() ); + + RegexMatcher aRegexMatcher( sSearchPat, nSearchFlags, nIcuErr ); + aRegexMatcher.reset( sSource ); + int64_t nStartPos = 0; + while( aRegexMatcher.find(nStartPos, nIcuErr) && + nIcuErr == U_ZERO_ERROR ) { - lcl_Minimize(sTemp,aRegExp,aRegs); + UnicodeString sMatch = + aRegexMatcher.group(nIcuErr); o_vFoundTags.push_back( OUStringToOString( - sTemp.copy(aRegs.start[0],aRegs.end[0]-aRegs.start[0]), + OUString( + reinterpret_cast( + sMatch.getBuffer()),sMatch.length()), RTL_TEXTENCODING_UTF8)); - nStart = aRegs.end[0]; - memset(static_cast(&aRegs), 0, sizeof(re_registers)); - aRegExp.re_search(&aRegs,nStart); + nStartPos = aRegexMatcher.start(nIcuErr)+1; } } -- cgit v1.2.3