00001 #include "gdSnarfTxt2Cont.h"
00002
00003 gdTxtCouple::gdTxtCouple (unsigned lineNr)
00004 : ptrCouple( nil )
00005 {
00006 thisInitTxtCouple( lineNr, nil );
00007 }
00008
00009 gdTxtCouple::gdTxtCouple (unsigned lineNr, char* str)
00010 : ptrCouple( nil )
00011 {
00012
00013
00014
00015 thisInitTxtCouple( lineNr, str );
00016 }
00017
00018 gdTxtCouple::~gdTxtCouple ()
00019 {
00020 delete ptrCouple;
00021 }
00022
00023 bool gdTxtCouple::IsOk ()
00024 {
00025 return ptrCouple!=nil;
00026 }
00027
00028 char* gdTxtCouple::GetStr ()
00029 {
00030 if ( IsOk()==false )
00031 return nil;
00032 return Str( 1 );
00033 }
00034
00035 gdHCouple* gdTxtCouple::CouplePtr ()
00036 {
00037 return ptrCouple;
00038 }
00039
00040 gdHCouple& gdTxtCouple::Couple ()
00041 {
00042 ASSERTION(ptrCouple!=nil,"ptrCouple!=nil");
00043 return *ptrCouple;
00044 }
00045
00046 void gdTxtCouple::Show (bool doShowAll)
00047 {
00048 if ( ptrCouple==nil ) return;
00049
00050 if ( doShowAll ) gList::Show( true );
00051
00052 printf("DBG: [Line:%u] original-str='%s'\n",ptrCouple->iLine,Str(1));
00053 printf("Couple->GetStr()='%s' (idTag=%d Tag?%c)\n",ptrCouple->GetStr(),ptrCouple->idTag,ISyORn(ptrCouple->IsText()==false));
00054 printf("Couple->GetHRef()='%s', IsAnchor()?%c\n",ptrCouple->GetHRef(),ISyORn(ptrCouple->IsAnchor()));
00055 printf("LST:"); ptrCouple->Show( true ); printf("[[EOX]]-LST\n");
00056
00057
00058 short iAttr, nAttr = ptrCouple->attrL.N();
00059 printf("attrL(nAttr=%d):\n",nAttr);
00060 for (iAttr=1; iAttr<=nAttr; iAttr++) {
00061 printf("[%s|",ptrCouple->attrL.GetAttr(iAttr));
00062 printf("%s]\n",ptrCouple->attrL.GetAttrValue(iAttr));
00063 }
00064 printf("[[EOX]]-attrL\n");
00065
00066 }
00067
00068 int gdTxtCouple::thisInitTxtCouple (unsigned lineNr, char* str)
00069 {
00070 gString s;
00071 gString sTagLst;
00072 char* strTag = nil;
00073 char* sAttrLst = nil;
00074 unsigned n, len;
00075
00076 if ( str==nil ) {
00077 ptrCouple = new gdHCouple( lineNr, "\0" );
00078 return 0;
00079 }
00080
00081 s.Set( str );
00082 s.Trim();
00083 Add( s.Str() );
00084 len = s.Length();
00085 if ( s[1]=='<' ) {
00086 if ( len<=2 || s[len]!='>' ) return -1;
00087 sTagLst.CopyFromTo( s, 2, len-1 );
00088 sTagLst.Trim();
00089 gParam aParam( sTagLst.Str(), " ", gParam::e_StopSplitOnFirst );
00090 n = aParam.N();
00091 strTag = aParam.Str( 1 );
00092 if ( n>1 ) {
00093 sAttrLst = aParam.Str( 2 );
00094 }
00095 ptrCouple = new gdHCouple( lineNr, strTag, sAttrLst );
00096 }
00097 else {
00098 ptrCouple = new gdHCouple( lineNr, s.Str() );
00099 }
00100 ASSERTION(ptrCouple!=nil,"ptrCouple!=nil");
00101 return 0;
00102 }
00103
00104