gdSnarfTxt2Cont.cpp

Go to the documentation of this file.
00001 #include "gdSnarfTxt2Cont.h"  // Build HTML-objs from text
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  // E.g.: "<a HrEf=abc Attr1=Val1>"
00013  // Couple() will contain the anchor tag, with 2 attributes within ptrCouple->attrL
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  // Show attributes
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  //printf("Find(HREF)=[%s]\n",ptrCouple->attrL.Find( "HREF", true/*doUnquote*/ ));
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 

Generated on Sat Aug 18 02:40:52 2007 for xpfweb_v2x lib by  doxygen 1.4.2