183 lines
3.1 KiB
Java
183 lines
3.1 KiB
Java
/*
|
|
* @(#)TextToHTML.java
|
|
*
|
|
* Copyright (C) 2002-2003 by Erik C. Thauvin (erik@thauvin.net)
|
|
* All rights reserved.
|
|
*
|
|
* Donated to the Roller Weblogger project for publication under
|
|
* the terms of the Roller Software License.
|
|
*/
|
|
|
|
//package com.imacination.jtalk;
|
|
|
|
/**
|
|
* Converts/encodes text to HTML or XML.
|
|
*
|
|
* @author Erik C. Thauvin
|
|
*
|
|
* @created October 31, 2002
|
|
*/
|
|
public class TextToHTML
|
|
{
|
|
/**
|
|
* The main program usage.
|
|
*/
|
|
private static final String USAGE = "Usage: java " + TextToHTML.class.getName() + " [-xml] <text-to-convert>";
|
|
|
|
/**
|
|
* Converts a character to HTML or XML entity.
|
|
*
|
|
* @param ch The character to convert.
|
|
* @param xml Convert the character to XML if set to true.
|
|
*
|
|
* @return The converted string.
|
|
*/
|
|
public static final String charToHTML(char ch, boolean xml)
|
|
{
|
|
int c;
|
|
|
|
// Convert left bracket
|
|
if (ch == '<')
|
|
{
|
|
return ("<");
|
|
}
|
|
|
|
// Convert left bracket
|
|
else if (ch == '>')
|
|
{
|
|
return (">");
|
|
}
|
|
|
|
// Convert ampersand
|
|
else if (ch == '&')
|
|
{
|
|
return ("&");
|
|
}
|
|
|
|
// High-ASCII character
|
|
else if (ch >= 128)
|
|
{
|
|
c = ch;
|
|
|
|
return ("&#" + c + ';');
|
|
}
|
|
|
|
// Convert double quote
|
|
else if (xml && (ch == '"'))
|
|
{
|
|
return (""");
|
|
}
|
|
|
|
// Convert single quote
|
|
else if (xml && (ch == '\''))
|
|
{
|
|
return ("'");
|
|
}
|
|
|
|
// No conversion
|
|
else
|
|
{
|
|
// Return character as string
|
|
return (String.valueOf(ch));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* The main program for the TextToHtml class.
|
|
*
|
|
* @param args The command line arguments.
|
|
*/
|
|
public static final void main(String[] args)
|
|
{
|
|
if (args.length > 0)
|
|
{
|
|
boolean xml = false;
|
|
int i = 0;
|
|
|
|
if (args[0].startsWith("-x"))
|
|
{
|
|
if (args.length == 1)
|
|
{
|
|
usage();
|
|
}
|
|
|
|
xml = true;
|
|
i++;
|
|
}
|
|
|
|
final StringBuffer cmdline = new StringBuffer();
|
|
|
|
for (; i < args.length; i++)
|
|
{
|
|
if (cmdline.length() != 0)
|
|
{
|
|
cmdline.append(' ');
|
|
}
|
|
|
|
cmdline.append(args[i]);
|
|
}
|
|
|
|
System.out.println(textToHTML(cmdline.toString(), xml));
|
|
}
|
|
else
|
|
{
|
|
usage();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Converts a text string to HTML or XML entities.
|
|
*
|
|
* @param text The string to convert.
|
|
* @param xml Convert the string to XML if set to true.
|
|
*
|
|
* @return The converted string.
|
|
*/
|
|
public static final String textToHTML(String text, boolean xml)
|
|
{
|
|
final StringBuffer html = new StringBuffer();
|
|
|
|
// Loop thru each characters of the text
|
|
for (int i = 0; i < text.length(); i++)
|
|
{
|
|
// Convert character to HTML/XML
|
|
html.append(charToHTML(text.charAt(i), xml));
|
|
}
|
|
|
|
// Return HTML/XML string
|
|
return html.toString();
|
|
}
|
|
|
|
/**
|
|
* Converts a text string to HTML or XML entities.
|
|
*
|
|
* @param text The string to convert.
|
|
*
|
|
* @return The converted string.
|
|
*/
|
|
public static final String textToHTML(String text)
|
|
{
|
|
return textToHTML(text, false);
|
|
}
|
|
|
|
/**
|
|
* Converts a text string to XML entities.
|
|
*
|
|
* @param text The string to convert.
|
|
*
|
|
* @return The converted string.
|
|
*/
|
|
public static final String textToXML(String text)
|
|
{
|
|
return textToHTML(text, true);
|
|
}
|
|
|
|
/**
|
|
* Prints the usage and exits.
|
|
*/
|
|
private static final void usage()
|
|
{
|
|
System.err.println(USAGE);
|
|
System.exit(1);
|
|
}
|
|
}
|