/*
 * $Id: PDFStringHelper.java,v 1.2 2007/08/26 18:56:35 gil1 Exp $
 *
 * $Date: 2007/08/26 18:56:35 $
 *
 * Copyright (C) 2001  Eric Z. Beard, ericzbeard@hotmail.com
 * 
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 */

package pdf;

/**
 * String manipulation methods
 *
 * @author Eric Z. Beard, ericzbeard@hotmail.com
 * @version $Revision: 1.2 $, $Date: 2007/08/26 18:56:35 $
 *
 */
public class PDFStringHelper
{
  /**
   * This converts a string into PDF. It prefixes ( or ) with \
   * and wraps the string in a ( ) pair.
   * @param s String to convert
   * @return String that can be placed in a PDF (or Postscript) stream
   */
  public static String makePDFString(String s) {
    if(s.indexOf("(")>-1)
      s = replace(s,"(","\\(");
    
    if(s.indexOf(")")>-1)
      s = replace(s,")","\\)");
    
    return "("+s+")";
  }
  
  /**
   * Helper method for toString()
   * @param s source string
   * @param f string to remove
   * @param t string to replace f
   * @return string with f replaced by t
   */
  private static String replace(String source,
                                String removeThis,
                                String replaceWith) {
    StringBuffer b = new StringBuffer();
    int p = 0, c=0;
    
    while(c>-1) {
      if((c = source.indexOf(removeThis,p)) > -1) {
        b.append(source.substring(p,c));
        b.append(replaceWith);
        p=c+1;
      }
    }
    
    // include any remaining text
    if(p<source.length())
      b.append(source.substring(p));
    
    return b.toString();
  }
} // end class PDFStringHelper
