DAUserAnnotate.cpp #1

  • //
  • guest/
  • sam_stafford/
  • deepannotate/
  • DAUserAnnotate.cpp
  • View
  • Commits
  • Open Download .zip Download (1 KB)
#include <clientapi.h>
#include "DAUserAnnotate.h"

#include "DAFile.h"
#include <strtable.h>

DAUserAnnotate::DAUserAnnotate( DAFile* f, ClientUser* u, bool q )
:file( f ), ui( u ), quiet( q )
{
	done = seenFile = false;
}

DAUserAnnotate::~DAUserAnnotate(void)
{
}

void DAUserAnnotate::OutputStat( StrDict* varList )
{
	if ( done ) return;

	StrPtr* data = varList->GetVar( "data" );
	StrPtr* upper = varList->GetVar( "upper" );
	StrPtr* lower = varList->GetVar( "lower" );
	if ( !data || !upper || !lower )
	{
		if ( seenFile )
		{
			done = true;
			return;
		}
		seenFile = true;
		if ( ui && !quiet ) ui->OutputStat( varList );
		return;
	}

	file->addLine( data, upper->Atoi(), lower->Atoi() );
}

void DAUserAnnotate::Message( Error* err )
{
	if ( seenFile )
	{
		done = true;
		return;
	}
	seenFile = true;
	if ( ui && ( !quiet || !err->IsInfo() ) ) ui->Message( err );
	return;
}

void DAUserAnnotate::OutputText( const char* data, int )
{
	if ( done ) return;
	StrBuf lower, upper;
	while ( *data && *data != '-' )		// lower
	{
		lower.Append( data++, 1 );
	}
	if ( *data ) data++;				// '-'
	while ( *data && *data != ':' )		// upper
	{
		upper.Append( data++, 1 );
	}
	if ( *data ) data++;				// ':'
	if ( *data ) data++;				// ' '

	StrRef text( data );

	if ( !lower.Length() || !upper.Length() ) return;
	
	file->addLine( &text, upper.Atoi(), lower.Atoi() );
}
# Change User Description Committed
#1 6297 Sam Stafford Work so far on "deep annotate".
 Been getting a lot of questions on
this lately from other people working on the same thing; might as well
pool efforts.