/*   -*- coding: utf-8 -*-  */
/***********************************************************************
*
*        Module   : SxmlNode
*        Fichier  : SxmlIndent.c
*        Auteur   : Jacques Ducloy
*        Date     : Feb. 2014
*
************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "SxmlNode.h"
#include "BufferParserXml.h"

extern char *optarg;
extern int   optind;
int getopt();

int kOption;

/*          To be improved   with options  */

int main (int argc, char **argv)
{
  SxmlNode *element;
  SxmlNode *listItem;
  Buffer *bufInd;

  char *unitXml;
  int nField;

  int cOption;

  kOption=0;
  while((cOption=getopt(argc,argv,"k"))!=EOF)
    {switch (cOption)
	{
	case 'k':
	  kOption=1;
	  break;
	}
    }

  nField=1;
  bufInd=NewBuffer();
  while ((unitXml=BufferParserStdinGetXmlUnit()))
    {
      if (unitXml[0]=='\n')
	{
	  if (kOption==0) printf("=============================================\n");
	  nField=1;
	  continue;
	}
      if (unitXml[0]=='\t')
	{
	  if (kOption==0) printf("------ %d\n", nField++);
	  continue;
	}
       if (unitXml[0]=='<')
	{
	  if (unitXml[1]=='?')
	    {
	      printf("%s\n", unitXml);
	      continue;
	    }
	  element=SxmlFromString(unitXml);
	  SxmlElementIndent(element, bufInd, 2);
	  SxmlFree(element);
	  continue;
	}     
       /*     At this point text or key if HFD record */
       
       if (kOption==0)printf("%s\n", unitXml);
       else 
	 {
	   BufferStrcpy(bufInd,unitXml);
	   BufferStrcat(bufInd,"\t");
	 }
    }
  exit (EXIT_SUCCESS);
}
