/*

  DBOX Module
  Copyright (C) 1994-2000 Daniel Kroening <kroening@handshake.de>

  Purpose: 

*/

#include <ctype.h>
#include <string>

#include <htmltools.h>

std::string htmlize_string(const std::string &s)
 {
  std::string dest;

  for(unsigned i=0; i<s.size(); i++)
   {
    switch(s[i])
     {
     case 0: break;
     case '&': dest+="&amp;";  break;
     case '<': dest+="&lt;";   break;
     case '>': dest+="&gt;";   break;
     case '"': dest+="&quot;"; break;

     default:
      dest+=s[i];
     }
   }

  return dest;
 }

static char hex_code[]="0123456789abcdef";

std::string urlize_string(const std::string &s)
 {
  std::string dest;

  for(unsigned i=0; i<s.size(); i++)
   {
    register char ch=s[i];

    if(!isalnum(ch) && ch!='/' && ch!='.' && ch!=':' && ch!='-')
     {
      dest+='%';
      dest+=hex_code[(ch>>4)&0xf];
      dest+=hex_code[ch&0xf];
     }
    else
      dest+=ch;
   }

  return dest;
 }



syntax highlighted by Code2HTML, v. 0.9.1