* Copyright (C) 2007 by Raul Fernandes *
* rgbr@yahoo.com.br *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "bgl_babylonreader.h"
#include "bgl_babylon.h"
#include "bgl_dictbuilder.h"
#include <stdio.h>
#include <glib/gstdio.h>
BabylonReader::BabylonReader( const std::string& infilename, const std::string& outfilename,
DictBuilder *builder )
{
m_babylon = new Babylon( infilename, outfilename );
m_builder = builder;
}
BabylonReader::~BabylonReader()
{
delete m_babylon;
}
bool BabylonReader::convert(const std::string &source_charset, const std::string &target_charset)
{
if( !m_babylon->open() )
{
g_critical("Error opening %s\n", m_babylon->filename().c_str());
return false;
}
if( !m_babylon->read(source_charset, target_charset) )
{
g_critical("Error reading %s\n", m_babylon->filename().c_str());
return false;
}
m_builder->setTitle( m_babylon->title() );
m_builder->setAuthor( m_babylon->author() );
m_builder->setEmail( m_babylon->email() );
m_builder->setLicense( m_babylon->copyright() );
m_builder->setOrigLang( m_babylon->sourceLang() );
m_builder->setDestLang( m_babylon->targetLang() );
m_builder->setDescription( m_babylon->description() );
bgl_entry entry;
entry = m_babylon->readEntry();
int n = 0;
while( entry.headword != "" )
{
m_builder->addHeadword( entry.headword.c_str(), entry.definition.c_str(), entry.alternates );
entry = m_babylon->readEntry();
n++;
}
m_babylon->close();
return true;
}