/***********************************************************************
*
*               Projet   : DilibPro
*               Module   : Sgml
*               Fichier  : SgmlCharSetToLC.c
*               Auteur   : J. DUCLOY
*               Date     : Novembre 93
*   $Id: SgmlCharSetToLC.c,v 1.6 2005/06/22 13:10:56 parmentf Exp $
*
************************************************************************
*
* Copyright (c) 1994 CNRS/CRIN & INRIA Lorraine
* 
************************************************************************/
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "StrSearch.h"
#include "CharSet.h"
#include "SgmlCharSet.h"

char* SgmlCharSetToLC(char *s)
{
  char *s1;
  static SgmlCharSetEntityReductor *entRed=NULL;
  if(!entRed)
    {
      entRed=SgmlCharSetEntityReductor_Create();
      SgmlCharSetEntityReductor_SetDefault(entRed,"");

      SgmlCharSetEntityReductor_AddAccent(entRed,"acute");
      SgmlCharSetEntityReductor_AddAccent(entRed,"grave");
      SgmlCharSetEntityReductor_AddAccent(entRed,"circ");
      SgmlCharSetEntityReductor_AddAccent(entRed,"cedil");
      SgmlCharSetEntityReductor_AddAccent(entRed,"uml");
      SgmlCharSetEntityReductor_AddAccent(entRed,"strok");
      SgmlCharSetEntityReductor_AddAccent(entRed,"slash");
      SgmlCharSetEntityReductor_AddAccent(entRed,".die");

      SgmlCharSetEntityReductor_AddTrans(entRed,"apos","\'");
      SgmlCharSetEntityReductor_AddTrans(entRed,"oelig","oe");
    }
  s1=SgmlCharSetEntityReductor_Convert(entRed,s);
  s1=CharSetToLower(s1);
  s1=CharSetSkipSetChar(s1,"-.");
  s1=CharSetCharReplace(s1,"\'",' ');
  s1=CharSetSpaceReduce(s1);
  return s1;
}


char* SgmlCharSetToUC(char *s)
{
  char *s1;
  static SgmlCharSetEntityReductor *entRed=NULL;
  if(!entRed)
    {
      entRed=SgmlCharSetEntityReductor_Create();
      SgmlCharSetEntityReductor_SetDefault(entRed,"");

      SgmlCharSetEntityReductor_AddAccent(entRed,"acute");
      SgmlCharSetEntityReductor_AddAccent(entRed,"grave");
      SgmlCharSetEntityReductor_AddAccent(entRed,"circ");
      SgmlCharSetEntityReductor_AddAccent(entRed,"cedil");
      SgmlCharSetEntityReductor_AddAccent(entRed,"uml");
      SgmlCharSetEntityReductor_AddAccent(entRed,"strok");
      SgmlCharSetEntityReductor_AddAccent(entRed,"slash");
      SgmlCharSetEntityReductor_AddAccent(entRed,".die");

      SgmlCharSetEntityReductor_AddTrans(entRed,"apos","\'");
    }
  s1=SgmlCharSetEntityReductor_Convert(entRed,s);
  s1=CharSetToUpper(s1);
  s1=CharSetSkipSetChar(s1,"-.");
  s1=CharSetCharReplace(s1,"\'",' ');
  s1=CharSetSpaceReduce(s1);
  return s1;
}

void SgmlCharSetPrintLC(char *s)
{
  printf("%s",SgmlCharSetToLC(s));
}



