Return TypeFunction nameArguments
hzHtagIndAtHtmlTag(hzString&,hzChain::Iter&,)

Declared in file: hzDocument.h
Defined in file : hzDocHtml.cpp

Function Logic:

0:START 1:hzMapS::Count 2:!s_htagNam.Count() 3:InitHtml 4:hzString::Clear zi 5:*zi!=(char)60 6:Return HTAG_IND_NULL 7:items 8:*zi==(char)47 9:retval items 10:retval 11:!zi.eof()&&IsAlpha(*zi); 12:hzChain::AddByte hzChain::Size 13:!W.Size() 14:Return HTAG_IND_NULL 15:tagname hzChain::Clear hzString::ToLower tf 16:tf.type==HTAG_NULL 17:Return HTAG_IND_NULL 18:!zi.eof(); 19:hzChain::AddByte 20:*zi==(char)34 21:!zi.eof(); 22:hzChain::AddByte 23:*zi==(char)92 24:items hzChain::AddByte 25:*zi==(char)34 26:*zi==(char)47 27:zi==/> 28:retval items hzChain::AddByte 29:*zi==(char)62 30:*zi!=(char)62 31:Return HTAG_IND_NULL 32:tagseq 33:Return retval

Function body:

hzHtagInd AtHtmlTag (hzString& tagseq, hzChain::Iter& ci)
{
   _hzfunc(__func__) ;
   hzChain     W ;
   chIter      zi ;
   hzHtagform  tf ;
   hzString    tagname ;
   hzHtagInd   retval ;
   if (!s_htagNam.Count())
       InitHtml() ;
   tagseq.Clear() ;
   zi = ci ;
   if (*zi != CHAR_LESS)
       return HTAG_IND_NULL ;
   zi++ ;
   if (*zi == CHAR_FWSLASH)
       { retval = HTAG_IND_ANTI ; zi++ ; }
   else
       retval = HTAG_IND_OPEN ;
   for (; !zi.eof() && IsAlpha(*zi) ; zi++)
       W.AddByte(*zi) ;
   if (!W.Size())
       return HTAG_IND_NULL ;
   tagname = W ;
   W.Clear() ;
   tagname.ToLower() ;
   tf = s_htagNam[tagname] ;
   if (tf.type == HTAG_NULL)
       return HTAG_IND_NULL ;
   for (zi = ci ; !zi.eof() ; zi++)
   {
       W.AddByte(*zi) ;
       if (*zi == CHAR_DQUOTE)
       {
           for (zi++ ; !zi.eof() ; zi++)
           {
               W.AddByte(*zi) ;
               if (*zi == CHAR_BKSLASH)
                   { zi++ ; W.AddByte(*zi) ; }
               if (*zi == CHAR_DQUOTE)
                   break ;
           }
           continue ;
       }
       if (*zi == CHAR_FWSLASH)
       {
           if (zi == "/>")
               { retval = HTAG_IND_SELF ; zi++ ; W.AddByte(*zi) ; }
       }
       if (*zi == CHAR_MORE)
           break ;
   }
   if (*zi != CHAR_MORE)
       return HTAG_IND_NULL ;
   tagseq = W ;
   return retval ;
}