From d61161061bd5998ef4b1fc2aaad2cf4bbd78e90d Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 11 Feb 2010 00:38:09 +0000 Subject: Started working on a CSV reader, it's pretty much done, the CSV writer is just a shell, but I may finish it soon, and started work on NewLine, a filter that converts newlines in text streams between the different OS standards. Also added some more helper operators to fbasicstring. --- src/csvreader.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/csvreader.cpp (limited to 'src/csvreader.cpp') diff --git a/src/csvreader.cpp b/src/csvreader.cpp new file mode 100644 index 0000000..a28c2c3 --- /dev/null +++ b/src/csvreader.cpp @@ -0,0 +1,100 @@ +#include "bu/csvreader.h" +#include "bu/stream.h" + +#include "bu/sio.h" +using namespace Bu; + +Bu::CsvReader::CsvReader( Bu::Stream &sIn, Bu::CsvReader::Style eStyle ) : + sIn( sIn ) +{ + switch( eStyle ) + { + case styleExcel: + sDecode = Bu::slot( &decodeExcel ); + break; + + case styleC: + sDecode = Bu::slot( &decodeExcel ); + break; + } +} + +Bu::CsvReader::CsvReader( Bu::Stream &sIn, + Bu::CsvReader::DecodeSignal sDecode ) : + sIn( sIn ), + sDecode( sDecode ) +{ +} + +Bu::CsvReader::~CsvReader() +{ +} + +Bu::StrArray Bu::CsvReader::readLine() +{ + Bu::StrArray aVals; + + Bu::FString sLine = sIn.readLine(); + + for( Bu::FString::iterator i = sLine.begin(); i; i++ ) + { + if( *i == ',' ) + { + } + else + { + aVals.append( sDecode( i ) ); + } + } + + return aVals; +} + +Bu::FString Bu::CsvReader::decodeExcel( Bu::FString::iterator &i ) +{ + Bu::FString sRet; + + for(; i && (*i == ' ' || *i == '\t'); i++ ) { } + + if( *i == '\"' ) + { + for( i++ ; i; i++ ) + { + if( *i == '\"' ) + { + i++; + if( *i == '\"' ) + { + sRet += *i; + } + else + { + return sRet; + } + } + else + { + sRet += *i; + } + } + } + else + { + for( ; i; i++ ) + { + if( *i == ',' ) + { + return sRet; + } + sRet += *i; + } + } + + return sRet; +} + +Bu::FString Bu::CsvReader::decodeC( Bu::FString::iterator &i ) +{ + return ""; +} + -- cgit v1.2.3