package org.opencyc.xml;

import org.opencyc.util.StringUtils;
import ViolinStrings.*;

/**
 * Provides utility methods for XML text processing.<p>
 *
 * @version $Id: TextUtil.java,v 1.2 2001/11/19 02:48:59 stephenreed Exp $
 * @author Stephen L. Reed
 *
 * <p>Copyright 2001 Cycorp, Inc., license is open source GNU LGPL.
 * <p><a href="http://www.opencyc.org/license.txt">the license</a>
 * <p><a href="http://www.opencyc.org">www.opencyc.org</a>
 * <p><a href="http://www.sourceforge.net/projects/opencyc">OpenCyc at SourceForge</a>
 * <p>
 * THIS SOFTWARE AND KNOWLEDGE BASE CONTENT ARE PROVIDED ``AS IS'' AND
 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OPENCYC
 * ORGANIZATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE AND KNOWLEDGE
 * BASE CONTENT, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

public class TextUtil {

    /**
     * Performs xml special character substitution.
     *
     * @param text the text be examined for xml special characters
     * @return the text with xml special character substitution
     */
    public static String doEntityReference (String text) {
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < text.length(); i++) {
            char ch = text.charAt(i);
            if (ch == '<')
                result.append("&lt;");
            else if (ch == '&')
                result.append("&amp;");
            else if (ch == '>')
                result.append("&gt;");
            else
                result.append(ch);
        }
        return result.toString();
    }

    /**
     * Transforms xml special character substitution to plain text
     *
     * @param text the text be examined for xml special characters
     * @return the text with xml special character substitution
     */
    public static String undoEntityReference (String text) {
        String result = Strings.change(text, "&lt;", "<");
        result = Strings.change(result, "&amp;", "&");
        result = Strings.change(result, "&gt;", ">");
        return result;
    }
}