Development Java Tutorial

/*
 *  Licensed to the Apache Software Foundation (ASF) under one
 *  or more contributor license agreements.  See the NOTICE file
 *  distributed with this work for additional information
 *  regarding copyright ownership.  The ASF licenses this file
 *  to you under the Apache License, Version 2.0 (the
 *  "License"); you may not use this file except in compliance
 *  with the License.  You may obtain a copy of the License at
 *  
 *    http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License. 
 *  
 */
/**
 * Various string manipulation methods that are more efficient then chaining
 * string operations: all is done in the same buffer without creating a bunch of
 * string objects.
 * 
 * @author Dungeon Project
 */
public class Main {
  /**
   * This method is used to insert HTML block dynamically
   * 
   * @param source
   *            the HTML code to be processes
   * @param replaceNl
   *            if true '\n' will be replaced by <br>
   * @param replaceTag
   *            if true '<' will be replaced by < and '>' will be replaced
   *            by >
   * @param replaceQuote
   *            if true '\"' will be replaced by "
   * @return the formated html block
   */
  public static final String formatHtml( String source, boolean replaceNl, boolean replaceTag,
      boolean replaceQuote )
  {
      StringBuffer buf = new StringBuffer();
      int len = source.length();
      for ( int ii = 0; ii < len; ii++ )
      {
          char ch = source.charAt( ii );
          
          switch ( ch )
          {
              case '\"':
                  if ( replaceQuote )
                  {
                      buf.append( """ );
                  }
                  else
                  {
                      buf.append( ch );
                  }
                  break;
              case '<':
                  if ( replaceTag )
                  {
                      buf.append( "<" );
                  }
                  else
                  {
                      buf.append( ch );
                  }
                  break;
              case '>':
                  if ( replaceTag )
                  {
                      buf.append( ">" );
                  }
                  else
                  {
                      buf.append( ch );
                  }
                  break;
              case '\n':
                  if ( replaceNl )
                  {
                      if ( replaceTag )
                      {
                          buf.append( "<br>" );
                      }
                      else
                      {
                          buf.append( "
" );
                      }
                  }
                  else
                  {
                      buf.append( ch );
                  }
                  break;
              case '\r':
                  break;
              case '&':
                  buf.append( "&" );
                  break;
              default:
                  buf.append( ch );
                  break;
          }
      }
      return buf.toString();
  }
}