diff options
author | Nils Fuhrmann <nf@openoffice.org> | 2000-11-22 11:57:00 +0000 |
---|---|---|
committer | Nils Fuhrmann <nf@openoffice.org> | 2000-11-22 11:57:00 +0000 |
commit | d92b556ec22d28737a9dc1cbefa36421cf86b2ab (patch) | |
tree | 26e4cb10bb650ab44981813de443018e2f573005 /transex3/source | |
parent | 996bd9c3c9c3505e6dcd974111bc8e62639eba5c (diff) |
New structure for final implementation of CfgExport
Diffstat (limited to 'transex3/source')
-rw-r--r-- | transex3/source/cfgmerge.cxx | 216 | ||||
-rw-r--r-- | transex3/source/export.cxx | 39 | ||||
-rw-r--r-- | transex3/source/export2.cxx | 214 |
3 files changed, 348 insertions, 121 deletions
diff --git a/transex3/source/cfgmerge.cxx b/transex3/source/cfgmerge.cxx index 9d5e0400d57c..974a79f46373 100644 --- a/transex3/source/cfgmerge.cxx +++ b/transex3/source/cfgmerge.cxx @@ -2,9 +2,9 @@ * * $RCSfile: cfgmerge.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: nf $ $Date: 2000-11-22 10:53:28 $ + * last change: $Author: nf $ $Date: 2000-11-22 12:57:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -185,6 +185,14 @@ int InitCfgExport( char *pOutput ) pParser = new CfgParser(); +/* if ( bMergeMode ) + pParser = new CfgMerge( sMergeSrc, sOutputFile, bErrorLog ); + else */ + if ( sOutputFile.Len()) { + pParser = new CfgExport( sOutputFile, sPrj, sActFileName ); + } + else + pParser = new CfgParser(); return 1; } @@ -329,28 +337,21 @@ void CfgParser::WorkOnText( ) /*****************************************************************************/ { -// fprintf( stdout, "%s %s %s %s\n", rCurrentGid.GetBuffer(), rCurrentLid.GetBuffer(), rIsoLang.GetBuffer(), rText.GetBuffer()); - - USHORT nLang = GetLang( rIsoLang ); + USHORT nLang = Export::GetLangByIsoLang( rIsoLang ); if ( nLang ) { pStackData->sText[ Export::GetLangIndex( nLang )] = rText; } + else { + ByteString sError( "Unknown language code: " ); + sError += rIsoLang; + Error( sError ); + } } /*****************************************************************************/ void CfgParser::WorkOnRessourceEnd( const ByteString &rResTyp ) /*****************************************************************************/ { - if ( pStackData->sText[ ENGLISH_US_INDEX ].Len()) { - pStackData->sResTyp = rResTyp; - - fprintf( stdout, "%s\n", aStack.GetAccessPath().GetBuffer()); - fprintf( stdout, "%s\n", pStackData->sResTyp.GetBuffer()); - for ( ULONG i = 0; i < LANGUAGES; i++ ) { - if ( pStackData->sText[ i ].Len()) - fprintf( stdout, "\t%s%s%s\n", pStackData->sTextTag.GetBuffer(), pStackData->sText[ i ].GetBuffer(), pStackData->sEndTextTag.GetBuffer()); - } - } } /*****************************************************************************/ @@ -457,78 +458,131 @@ int CfgParser::Execute( int nToken, char * pToken ) return ExecuteAnalyzedToken( nToken, pToken ); } + /*****************************************************************************/ -USHORT CfgParser::GetLang( const ByteString &rIsoLang ) +void CfgParser::Error( const ByteString &rError ) /*****************************************************************************/ { - ByteString sLang( rIsoLang ); - - sLang.ToUpperAscii(); - - if ( sLang == ByteString( COMMENT_ISO ).ToUpperAscii()) - return COMMENT; - else if ( sLang == ByteString( ENGLISH_US_ISO ).ToUpperAscii()) - return ENGLISH_US; - else if ( sLang == ByteString( PORTUGUESE_ISO ).ToUpperAscii()) - return PORTUGUESE; - else if ( sLang == ByteString( RUSSIAN_ISO ).ToUpperAscii()) - return RUSSIAN; - else if ( sLang == ByteString( GREEK_ISO ).ToUpperAscii()) - return GREEK; - else if ( sLang == ByteString( DUTCH_ISO ).ToUpperAscii()) - return DUTCH; - else if ( sLang == ByteString( FRENCH_ISO ).ToUpperAscii()) - return FRENCH; - else if ( sLang == ByteString( SPANISH_ISO ).ToUpperAscii()) - return SPANISH; - else if ( sLang == ByteString( FINNISH_ISO ).ToUpperAscii()) - return FINNISH; - else if ( sLang == ByteString( HUNGARIAN_ISO ).ToUpperAscii()) - return HUNGARIAN; - else if ( sLang == ByteString( ITALIAN_ISO ).ToUpperAscii()) - return ITALIAN; - else if ( sLang == ByteString( CZECH_ISO ).ToUpperAscii()) - return CZECH; - else if ( sLang == ByteString( SLOVAK_ISO ).ToUpperAscii()) - return SLOVAK; - else if ( sLang == ByteString( ENGLISH_ISO ).ToUpperAscii()) - return ENGLISH; - else if ( sLang == ByteString( DANISH_ISO ).ToUpperAscii()) - return DANISH; - else if ( sLang == ByteString( SWEDISH_ISO ).ToUpperAscii()) - return SWEDISH; - else if ( sLang == ByteString( NORWEGIAN_ISO ).ToUpperAscii()) - return NORWEGIAN; - else if ( sLang == ByteString( POLISH_ISO ).ToUpperAscii()) - return POLISH; - else if ( sLang == ByteString( GERMAN_ISO ).ToUpperAscii()) - return GERMAN; - else if ( sLang == ByteString( PORTUGUESE_BRAZILIAN_ISO ).ToUpperAscii()) - return PORTUGUESE_BRAZILIAN; - else if ( sLang == ByteString( JAPANESE_ISO ).ToUpperAscii()) - return JAPANESE; - else if ( sLang == ByteString( KOREAN_ISO ).ToUpperAscii()) - return KOREAN; - else if ( sLang == ByteString( CHINESE_SIMPLIFIED_ISO ).ToUpperAscii()) - return CHINESE_SIMPLIFIED; - else if ( sLang == ByteString( CHINESE_TRADITIONAL_ISO ).ToUpperAscii()) - return CHINESE_TRADITIONAL; - else if ( sLang == ByteString( TURKISH_ISO ).ToUpperAscii()) - return TURKISH; - else if ( sLang == ByteString( ARABIC_ISO ).ToUpperAscii()) - return ARABIC; - else if ( sLang == ByteString( HEBREW_ISO ).ToUpperAscii()) - return HEBREW; - - ByteString sError( "Unknown language code: " ); - sError += rIsoLang; - Error( sError ); - return 0; + yyerror(( char * ) rError.GetBuffer()); } + +// +// class CfgOutputParser +// + /*****************************************************************************/ -void CfgParser::Error( const ByteString &rError ) +CfgOutputParser::CfgOutputParser( const ByteString &rOutputFile ) /*****************************************************************************/ { - yyerror(( char * ) rError.GetBuffer()); + pOutputStream = + new SvFileStream( + String( rOutputFile, RTL_TEXTENCODING_ASCII_US ), + STREAM_STD_WRITE | STREAM_TRUNC + ); + + if ( !pOutputStream->IsOpen()) { + ByteString sError( "Unable to open output file: " ); + sError += rOutputFile; + Error( sError ); + delete pOutputStream; + pOutputStream = NULL; + } +} + +/*****************************************************************************/ +CfgOutputParser::~CfgOutputParser() +/*****************************************************************************/ +{ + if ( pOutputStream ) { + pOutputStream->Close(); + delete pOutputStream; + } +} + +// +// class CfgExport +// + +/*****************************************************************************/ +CfgExport::CfgExport( + const ByteString &rOutputFile, + const ByteString &rProject, + const ByteString &rFilePath +) +/*****************************************************************************/ + : CfgOutputParser( rOutputFile ), + sPrj( rProject ), + sPath( rFilePath ) +{ +} + +/*****************************************************************************/ +CfgExport::~CfgExport() +/*****************************************************************************/ +{ +} + +/*****************************************************************************/ +void CfgExport::WorkOnRessourceEnd( const ByteString &rResTyp ) +/*****************************************************************************/ +{ + if ( pOutputStream ) { + if ( pStackData->sText[ GERMAN_INDEX ].Len() && + ( pStackData->sText[ ENGLISH_US_INDEX ].Len() || + pStackData->sText[ ENGLISH_INDEX ].Len()) + ) + { + ByteString sFallback = pStackData->sText[ GERMAN_INDEX ]; + if ( pStackData->sText[ ENGLISH_US_INDEX ].Len()) + sFallback = pStackData->sText[ ENGLISH_US_INDEX ]; + else if ( pStackData->sText[ ENGLISH_INDEX ].Len()) + sFallback = pStackData->sText[ ENGLISH_INDEX ]; + + ByteString sLocalId = pStackData->sIdentifier; + ByteString sGroupId; + if ( aStack.Count() == 1 ) { + sGroupId = sLocalId; + sLocalId = ""; + } + else { + sGroupId = aStack.GetAccessPath( aStack.Count() - 2 ); + } + + Time aTime; + ByteString sTimeStamp( ByteString::CreateFromInt64( Date().GetDate())); + sTimeStamp += " "; + sTimeStamp += ByteString::CreateFromInt32( aTime.GetHour()); + sTimeStamp += ":"; + sTimeStamp += ByteString::CreateFromInt32( aTime.GetMin()); + sTimeStamp += ":"; + sTimeStamp += ByteString::CreateFromInt32( aTime.GetSec()); + + for ( ULONG i = 0; i < LANGUAGES; i++ ) { + if ( LANGUAGE_ALLOWED( i )) { + ByteString sText = pStackData->sText[ i ]; + if ( !sText.Len()) + sText = sFallback; + + Export::UnquotHTML( sText ); + USHORT nLangId = Export::LangId[ i ]; + sText = UTF8Converter::ConvertFromUTF8( + sText, Export::GetCharSet( nLangId )); + + ByteString sOutput( sPrj ); sOutput += "\t"; + sOutput += sPath; + sOutput += "\t0\t"; + sOutput += rResTyp; sOutput += "\t"; + sOutput += sGroupId; sOutput += "\t"; + sOutput += sLocalId; sOutput += "\t\t\t0\t"; + sOutput += ByteString::CreateFromInt64( nLangId ); + sOutput += "\t"; + sOutput += sText; sOutput += "\t\t\t\t"; + sOutput += sTimeStamp; + + pOutputStream->WriteLine( sOutput ); + } + } + } + } } diff --git a/transex3/source/export.cxx b/transex3/source/export.cxx index 9e5eeca3967c..1cfb9dda2681 100644 --- a/transex3/source/export.cxx +++ b/transex3/source/export.cxx @@ -2,9 +2,9 @@ * * $RCSfile: export.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: nf $ $Date: 2000-11-15 12:29:30 $ + * last change: $Author: nf $ $Date: 2000-11-22 12:57:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -331,41 +331,6 @@ BOOL ResData::SetId( const ByteString &rId, USHORT nLevel ) // class Export // - -/*****************************************************************************/ -const ByteString Export::LangName[ LANGUAGES ] = -/*****************************************************************************/ -{ - "language_user1", - "english_us", - "portuguese", - "german_de", - "russian", - "greek", - "dutch", - "french", - "spanish", - "finnish", - "hungarian", - "italian", - "czech", - "slovak", - "english", - "danish", - "swedish", - "norwegian", - "polish", - "german", - "portuguese_brazilian", - "japanese", - "korean", - "chinese_simplified", - "chinese_traditional", - "turkish", - "arabic", - "hebrew" -}; - /*****************************************************************************/ Export::Export( const ByteString &rOutput, BOOL bWrite, const ByteString &rPrj, const ByteString &rPrjRoot ) diff --git a/transex3/source/export2.cxx b/transex3/source/export2.cxx index bfa3132499a0..c53a30a6b6a7 100644 --- a/transex3/source/export2.cxx +++ b/transex3/source/export2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: export2.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: nf $ $Date: 2000-11-03 16:07:40 $ + * last change: $Author: nf $ $Date: 2000-11-22 12:57:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -142,7 +142,7 @@ USHORT Export::LangId[ LANGUAGES ] = USHORT Export::GetLangIndex( USHORT nLangId ) /*****************************************************************************/ { - for ( ULONG i = 0; i < LANGUAGES; i++ ) + for ( USHORT i = 0; i < LANGUAGES; i++ ) if ( nLangId == LangId[ i ] ) return i; return 0xFFFF; @@ -184,3 +184,211 @@ CharSet Export::GetCharSet( USHORT nLangId ) return 0xFFFF; } +/*****************************************************************************/ +USHORT Export::GetLangByIsoLang( const ByteString &rIsoLang ) +/*****************************************************************************/ +{ + ByteString sLang( rIsoLang ); + + sLang.ToUpperAscii(); + + if ( sLang == ByteString( COMMENT_ISO ).ToUpperAscii()) + return COMMENT; + else if ( sLang == ByteString( ENGLISH_US_ISO ).ToUpperAscii()) + return ENGLISH_US; + else if ( sLang == ByteString( PORTUGUESE_ISO ).ToUpperAscii()) + return PORTUGUESE; + else if ( sLang == ByteString( RUSSIAN_ISO ).ToUpperAscii()) + return RUSSIAN; + else if ( sLang == ByteString( GREEK_ISO ).ToUpperAscii()) + return GREEK; + else if ( sLang == ByteString( DUTCH_ISO ).ToUpperAscii()) + return DUTCH; + else if ( sLang == ByteString( FRENCH_ISO ).ToUpperAscii()) + return FRENCH; + else if ( sLang == ByteString( SPANISH_ISO ).ToUpperAscii()) + return SPANISH; + else if ( sLang == ByteString( FINNISH_ISO ).ToUpperAscii()) + return FINNISH; + else if ( sLang == ByteString( HUNGARIAN_ISO ).ToUpperAscii()) + return HUNGARIAN; + else if ( sLang == ByteString( ITALIAN_ISO ).ToUpperAscii()) + return ITALIAN; + else if ( sLang == ByteString( CZECH_ISO ).ToUpperAscii()) + return CZECH; + else if ( sLang == ByteString( SLOVAK_ISO ).ToUpperAscii()) + return SLOVAK; + else if ( sLang == ByteString( ENGLISH_ISO ).ToUpperAscii()) + return ENGLISH; + else if ( sLang == ByteString( DANISH_ISO ).ToUpperAscii()) + return DANISH; + else if ( sLang == ByteString( SWEDISH_ISO ).ToUpperAscii()) + return SWEDISH; + else if ( sLang == ByteString( NORWEGIAN_ISO ).ToUpperAscii()) + return NORWEGIAN; + else if ( sLang == ByteString( POLISH_ISO ).ToUpperAscii()) + return POLISH; + else if ( sLang == ByteString( GERMAN_ISO ).ToUpperAscii()) + return GERMAN; + else if ( sLang == ByteString( PORTUGUESE_BRAZILIAN_ISO ).ToUpperAscii()) + return PORTUGUESE_BRAZILIAN; + else if ( sLang == ByteString( JAPANESE_ISO ).ToUpperAscii()) + return JAPANESE; + else if ( sLang == ByteString( KOREAN_ISO ).ToUpperAscii()) + return KOREAN; + else if ( sLang == ByteString( CHINESE_SIMPLIFIED_ISO ).ToUpperAscii()) + return CHINESE_SIMPLIFIED; + else if ( sLang == ByteString( CHINESE_TRADITIONAL_ISO ).ToUpperAscii()) + return CHINESE_TRADITIONAL; + else if ( sLang == ByteString( TURKISH_ISO ).ToUpperAscii()) + return TURKISH; + else if ( sLang == ByteString( ARABIC_ISO ).ToUpperAscii()) + return ARABIC; + else if ( sLang == ByteString( HEBREW_ISO ).ToUpperAscii()) + return HEBREW; + + return 0; +} + +/*****************************************************************************/ +ByteString Export::GetIsoLangByIndex( USHORT nIndex ) +/*****************************************************************************/ +{ + switch ( nIndex ) { + case COMMENT_INDEX: return COMMENT_ISO; + case ENGLISH_US_INDEX: return ENGLISH_US_ISO; + case PORTUGUESE_INDEX: return PORTUGUESE_ISO; + case RUSSIAN_INDEX: return RUSSIAN_ISO; + case GREEK_INDEX: return GREEK_ISO; + case DUTCH_INDEX: return DUTCH_ISO; + case FRENCH_INDEX: return FRENCH_ISO; + case SPANISH_INDEX: return SPANISH_ISO; + case FINNISH_INDEX: return FINNISH_ISO; + case HUNGARIAN_INDEX: return HUNGARIAN_ISO; + case ITALIAN_INDEX: return ITALIAN_ISO; + case CZECH_INDEX: return CZECH_ISO; + case SLOVAK_INDEX: return SLOVAK_ISO; + case ENGLISH_INDEX: return ENGLISH_ISO; + case DANISH_INDEX: return DANISH_ISO; + case SWEDISH_INDEX: return SWEDISH_ISO; + case NORWEGIAN_INDEX: return NORWEGIAN_ISO; + case POLISH_INDEX: return POLISH_ISO; + case GERMAN_INDEX: return GERMAN_ISO; + case PORTUGUESE_BRAZILIAN_INDEX: return PORTUGUESE_BRAZILIAN_ISO; + case JAPANESE_INDEX: return JAPANESE_ISO; + case KOREAN_INDEX: return KOREAN_ISO; + case CHINESE_SIMPLIFIED_INDEX: return CHINESE_SIMPLIFIED_ISO; + case CHINESE_TRADITIONAL_INDEX: return CHINESE_TRADITIONAL_ISO; + case TURKISH_INDEX: return TURKISH_ISO; + case ARABIC_INDEX: return ARABIC_ISO; + case HEBREW_INDEX: return HEBREW_ISO; + } + return ""; +} + +/*****************************************************************************/ +void Export::QuotHTML( ByteString &rString ) +/*****************************************************************************/ +{ + ByteString sReturn; + for ( ULONG i = 0; i < rString.Len(); i++ ) { + switch ( rString.GetChar( i )) { + case '<': + sReturn += "<"; + break; + + case '>': + sReturn += ">"; + break; + + case '\"': + sReturn += """; + break; + + case '\'': + sReturn += "'"; + break; + + case '&': + if ((( i + 4 ) < rString.Len()) && + ( rString.Copy( i, 5 ) == "&" )) + sReturn += rString.GetChar( i ); + else + sReturn += "&"; + break; + + default: + sReturn += rString.GetChar( i ); + break; + } + } + rString = sReturn; +} + +/*****************************************************************************/ +void Export::UnquotHTML( ByteString &rString ) +/*****************************************************************************/ +{ + ByteString sReturn; + while ( rString.Len()) { + if ( rString.Copy( 0, 5 ) == "&" ) { + sReturn += "&"; + rString.Erase( 0, 5 ); + } + else if ( rString.Copy( 0, 4 ) == "<" ) { + sReturn += "<"; + rString.Erase( 0, 4 ); + } + else if ( rString.Copy( 0, 4 ) == ">" ) { + sReturn += ">"; + rString.Erase( 0, 4 ); + } + else if ( rString.Copy( 0, 6 ) == """ ) { + sReturn += "\""; + rString.Erase( 0, 6 ); + } + else if ( rString.Copy( 0, 6 ) == "'" ) { + sReturn += "\'"; + rString.Erase( 0, 6 ); + } + else { + sReturn += rString.GetChar( 0 ); + rString.Erase( 0, 1 ); + } + } + rString = sReturn; +} + +/*****************************************************************************/ +const ByteString Export::LangName[ LANGUAGES ] = +/*****************************************************************************/ +{ + "language_user1", + "english_us", + "portuguese", + "german_de", + "russian", + "greek", + "dutch", + "french", + "spanish", + "finnish", + "hungarian", + "italian", + "czech", + "slovak", + "english", + "danish", + "swedish", + "norwegian", + "polish", + "german", + "portuguese_brazilian", + "japanese", + "korean", + "chinese_simplified", + "chinese_traditional", + "turkish", + "arabic", + "hebrew" +}; |