blob: 1b7b3533e930769f856dc71b7919c9a44db50e3b [file] [log] [blame]
/*
* conv.h --- header file for conv, the encoding module of websh3
* nca-073-9
*
* Copyright (c) 1996-2000 by Netcetera AG.
* Copyright (c) 2001 by Apache Software Foundation.
* All rights reserved.
*
* See the file "license.terms" for information on usage and
* redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
* @(#) $Id$
*
*/
#include <tcl.h>
#include "webutl.h"
#include "hashutl.h"
#ifndef CONV_H
#define CONV_H
/* --------------------------------------------------------------------------
* Commands
* ------------------------------------------------------------------------*/
/* ----------------------------------------------------------------------------
* SubCommands
* ------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------------
* Switches
* Params
* ------------------------------------------------------------------------- */
#define WEB_CONV_HTMLIFY_SWITCH_NUMERIC "-numeric"
/* --------------------------------------------------------------------------
* Registered Data (SetAssocData)
* ------------------------------------------------------------------------*/
#define WEB_CONV_ASSOC_DATA "web::conv"
/* --------------------------------------------------------------------------
* Internas
* ------------------------------------------------------------------------*/
#define WEBENC_LATIN_TABLE_LENGTH 256
/* ----------------------------------------------------------------------------
* internal data
* ------------------------------------------------------------------------- */
typedef struct ConvData
{
int need[WEBENC_LATIN_TABLE_LENGTH];
Tcl_Obj *ute[WEBENC_LATIN_TABLE_LENGTH]; /* ">" --> "gt" */
Tcl_HashTable *etu; /* "gt" --> ">" */
}
ConvData;
ConvData *createConvData();
void destroyConvData(ClientData clientData, Tcl_Interp * interp);
/* ----------------------------------------------------------------------------
* Tcl interface
* ------------------------------------------------------------------------- */
int conv_Init(Tcl_Interp * interp);
int Web_Htmlify(ClientData clientData,
Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
int Web_UriEncode(ClientData clientData,
Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
int Web_UriDecode(ClientData clientData,
Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
int Web_DeHtmlify(ClientData clientData,
Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
void htmlifyAppendNum(Tcl_Obj * tclo, int num);
Tcl_Obj *webHtmlify(ConvData * convData, Tcl_Obj * in, int useNumeric);
int webDeHtmlify(ConvData * convData, Tcl_Obj * in, Tcl_Obj * out);
Tcl_Obj *uriEncode(Tcl_Obj * inString);
Tcl_Obj *uriDecode(Tcl_Obj * inString);
/* ----------------------------------------------------------------------------
* prototypes
* ------------------------------------------------------------------------- */
int removeHtmlComments(Tcl_Interp * interp, Tcl_Obj * in, Tcl_Obj * res);
int removeShortHtmlComments(Tcl_Obj * in, Tcl_Obj * res);
int removeHtmlTags(Tcl_Obj * in, Tcl_Obj * res);
int convertHtmlEntities(ConvData * convData, Tcl_Obj * in, Tcl_Obj * res);
Tcl_UniChar getNumericEntity(Tcl_UniChar ** str, int len);
int Web_Html_RemoveComments(ClientData clientData,
Tcl_Interp * interp,
int objc, Tcl_Obj * CONST objv[]);
#endif