Switched to Eclipse 2.1 development; eliminated JTidy package => now standalone plugin
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / tidy / Tidy.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/tidy/Tidy.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/tidy/Tidy.java
deleted file mode 100644 (file)
index 20862c1..0000000
+++ /dev/null
@@ -1,1424 +0,0 @@
-/*
- * @(#)Tidy.java   1.11 2000/08/16
- *
- */
-
-/*
-  HTML parser and pretty printer
-
-  Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
-  Institute of Technology, Institut National de Recherche en
-  Informatique et en Automatique, Keio University). All Rights
-  Reserved.
-
-  Contributing Author(s):
-
-     Dave Raggett <dsr@w3.org>
-     Andy Quick <ac.quick@sympatico.ca> (translation to Java)
-
-  The contributing author(s) would like to thank all those who
-  helped with testing, bug fixes, and patience.  This wouldn't
-  have been possible without all of you.
-
-  COPYRIGHT NOTICE:
-  This software and documentation is provided "as is," and
-  the copyright holders and contributing author(s) make no
-  representations or warranties, express or implied, including
-  but not limited to, warranties of merchantability or fitness
-  for any particular purpose or that the use of the software or
-  documentation will not infringe any third party patents,
-  copyrights, trademarks or other rights. 
-
-  The copyright holders and contributing author(s) will not be
-  liable for any direct, indirect, special or consequential damages
-  arising out of any use of the software or documentation, even if
-  advised of the possibility of such damage.
-
-  Permission is hereby granted to use, copy, modify, and distribute
-  this source code, or portions hereof, documentation and executables,
-  for any purpose, without fee, subject to the following restrictions:
-
-  1. The origin of this source code must not be misrepresented.
-  2. Altered versions must be plainly marked as such and must
-     not be misrepresented as being the original source.
-  3. This Copyright notice may not be removed or altered from any
-     source or altered source distribution.
-  The copyright holders and contributing author(s) specifically
-  permit, without fee, and encourage the use of this source code
-  as a component for supporting the Hypertext Markup Language in
-  commercial products. If you use this source code in a product,
-  acknowledgment is not required but would be appreciated.
-*/
-
-package net.sourceforge.phpdt.tidy;
-
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-import java.util.Properties;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.runtime.CoreException;
-
-/**
- *
- * <p>HTML parser and pretty printer</p>
- *
- * <p>
- * (c) 1998-2000 (W3C) MIT, INRIA, Keio University
- * See Tidy.java for the copyright notice.
- * Derived from <a href="http://www.w3.org/People/Raggett/tidy">
- * HTML Tidy Release 4 Aug 2000</a>
- * </p>
- *
- * <p>
- * Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
- * Institute of Technology, Institut National de Recherche en
- * Informatique et en Automatique, Keio University). All Rights
- * Reserved.
- * </p>
- *
- * <p>
- * Contributing Author(s):<br>
- *    <a href="mailto:dsr@w3.org">Dave Raggett</a><br>
- *    <a href="mailto:ac.quick@sympatico.ca">Andy Quick</a> (translation to Java)
- * </p>
- *
- * <p>
- * The contributing author(s) would like to thank all those who
- * helped with testing, bug fixes, and patience.  This wouldn't
- * have been possible without all of you.
- * </p>
- *
- * <p>
- * COPYRIGHT NOTICE:<br>
- * 
- * This software and documentation is provided "as is," and
- * the copyright holders and contributing author(s) make no
- * representations or warranties, express or implied, including
- * but not limited to, warranties of merchantability or fitness
- * for any particular purpose or that the use of the software or
- * documentation will not infringe any third party patents,
- * copyrights, trademarks or other rights. 
- * </p>
- *
- * <p>
- * The copyright holders and contributing author(s) will not be
- * liable for any direct, indirect, special or consequential damages
- * arising out of any use of the software or documentation, even if
- * advised of the possibility of such damage.
- * </p>
- *
- * <p>
- * Permission is hereby granted to use, copy, modify, and distribute
- * this source code, or portions hereof, documentation and executables,
- * for any purpose, without fee, subject to the following restrictions:
- * </p>
- *
- * <p>
- * <ol>
- * <li>The origin of this source code must not be misrepresented.</li>
- * <li>Altered versions must be plainly marked as such and must
- * not be misrepresented as being the original source.</li>
- * <li>This Copyright notice may not be removed or altered from any
- * source or altered source distribution.</li>
- * </ol>
- * </p>
- *
- * <p>
- * The copyright holders and contributing author(s) specifically
- * permit, without fee, and encourage the use of this source code
- * as a component for supporting the Hypertext Markup Language in
- * commercial products. If you use this source code in a product,
- * acknowledgment is not required but would be appreciated.
- * </p>
- *
- * @author  Dave Raggett <dsr@w3.org>
- * @author  Andy Quick <ac.quick@sympatico.ca> (translation to Java)
- * @version 1.0, 1999/05/22
- * @version 1.0.1, 1999/05/29
- * @version 1.1, 1999/06/18 Java Bean
- * @version 1.2, 1999/07/10 Tidy Release 7 Jul 1999
- * @version 1.3, 1999/07/30 Tidy Release 26 Jul 1999
- * @version 1.4, 1999/09/04 DOM support
- * @version 1.5, 1999/10/23 Tidy Release 27 Sep 1999
- * @version 1.6, 1999/11/01 Tidy Release 22 Oct 1999
- * @version 1.7, 1999/12/06 Tidy Release 30 Nov 1999
- * @version 1.8, 2000/01/22 Tidy Release 13 Jan 2000
- * @version 1.9, 2000/06/03 Tidy Release 30 Apr 2000
- * @version 1.10, 2000/07/22 Tidy Release 8 Jul 2000
- * @version 1.11, 2000/08/16 Tidy Release 4 Aug 2000
- *
- */
-
-public class Tidy implements java.io.Serializable {
-
-  static final long serialVersionUID = -2794371560623987718L;
-
-  private boolean initialized = false;
-  private PrintWriter errout = null; /* error output stream */
-  private PrintWriter stderr = null;
-  private Configuration configuration = null;
-  private String inputStreamName = "InputStream";
-  private int parseErrors = 0;
-  private int parseWarnings = 0;
-
-  public Tidy() {
-    init();
-  }
-
-  public Configuration getConfiguration() {
-    return configuration;
-  }
-
-  public PrintWriter getStderr() {
-    return stderr;
-  }
-
-  /**
-   * ParseErrors - the number of errors that occurred in the most
-   * recent parse operation
-   */
-
-  public int getParseErrors() {
-    return parseErrors;
-  }
-
-  /**
-   * ParseWarnings - the number of warnings that occurred in the most
-   * recent parse operation
-   */
-
-  public int getParseWarnings() {
-    return parseWarnings;
-  }
-
-  /**
-   * Errout - the error output stream
-   */
-
-  public PrintWriter getErrout() {
-    return errout;
-  }
-
-  public void setErrout(PrintWriter errout) {
-    this.errout = errout;
-  }
-
-  /**
-   * Spaces - default indentation
-   * @see org.w3c.tidy.Configuration#spaces
-   */
-
-  public void setSpaces(int spaces) {
-    configuration.spaces = spaces;
-  }
-
-  public int getSpaces() {
-    return configuration.spaces;
-  }
-
-  /**
-   * Wraplen - default wrap margin
-   * @see org.w3c.tidy.Configuration#wraplen
-   */
-
-  public void setWraplen(int wraplen) {
-    configuration.wraplen = wraplen;
-  }
-
-  public int getWraplen() {
-    return configuration.wraplen;
-  }
-
-  /**
-   * CharEncoding
-   * @see org.w3c.tidy.Configuration#CharEncoding
-   */
-
-  public void setCharEncoding(int charencoding) {
-    configuration.CharEncoding = charencoding;
-  }
-
-  public int getCharEncoding() {
-    return configuration.CharEncoding;
-  }
-
-  /**
-   * Tabsize
-   * @see org.w3c.tidy.Configuration#tabsize
-   */
-
-  public void setTabsize(int tabsize) {
-    configuration.tabsize = tabsize;
-  }
-
-  public int getTabsize() {
-    return configuration.tabsize;
-  }
-
-  /**
-   * Errfile - file name to write errors to
-   * @see org.w3c.tidy.Configuration#errfile
-   */
-
-  public void setErrfile(String errfile) {
-    configuration.errfile = errfile;
-  }
-
-  public String getErrfile() {
-    return configuration.errfile;
-  }
-
-  /**
-   * Writeback - if true then output tidied markup
-   * NOTE: this property is ignored when parsing from an InputStream.
-   * @see org.w3c.tidy.Configuration#writeback
-   */
-
-  public void setWriteback(boolean writeback) {
-    configuration.writeback = writeback;
-  }
-
-  public boolean getWriteback() {
-    return configuration.writeback;
-  }
-
-  /**
-   * OnlyErrors - if true normal output is suppressed
-   * @see org.w3c.tidy.Configuration#OnlyErrors
-   */
-
-  public void setOnlyErrors(boolean OnlyErrors) {
-    configuration.OnlyErrors = OnlyErrors;
-  }
-
-  public boolean getOnlyErrors() {
-    return configuration.OnlyErrors;
-  }
-
-  /**
-   * ShowWarnings - however errors are always shown
-   * @see org.w3c.tidy.Configuration#ShowWarnings
-   */
-
-  public void setShowWarnings(boolean ShowWarnings) {
-    configuration.ShowWarnings = ShowWarnings;
-  }
-
-  public boolean getShowWarnings() {
-    return configuration.ShowWarnings;
-  }
-
-  /**
-   * Quiet - no 'Parsing X', guessed DTD or summary
-   * @see org.w3c.tidy.Configuration#Quiet
-   */
-
-  public void setQuiet(boolean Quiet) {
-    configuration.Quiet = Quiet;
-  }
-
-  public boolean getQuiet() {
-    return configuration.Quiet;
-  }
-
-  /**
-   * IndentContent - indent content of appropriate tags
-   * @see org.w3c.tidy.Configuration#IndentContent
-   */
-
-  public void setIndentContent(boolean IndentContent) {
-    configuration.IndentContent = IndentContent;
-  }
-
-  public boolean getIndentContent() {
-    return configuration.IndentContent;
-  }
-
-  /**
-   * SmartIndent - does text/block level content effect indentation
-   * @see org.w3c.tidy.Configuration#SmartIndent
-   */
-
-  public void setSmartIndent(boolean SmartIndent) {
-    configuration.SmartIndent = SmartIndent;
-  }
-
-  public boolean getSmartIndent() {
-    return configuration.SmartIndent;
-  }
-
-  /**
-   * HideEndTags - suppress optional end tags
-   * @see org.w3c.tidy.Configuration#HideEndTags
-   */
-
-  public void setHideEndTags(boolean HideEndTags) {
-    configuration.HideEndTags = HideEndTags;
-  }
-
-  public boolean getHideEndTags() {
-    return configuration.HideEndTags;
-  }
-
-  /**
-   * XmlTags - treat input as XML
-   * @see org.w3c.tidy.Configuration#XmlTags
-   */
-
-  public void setXmlTags(boolean XmlTags) {
-    configuration.XmlTags = XmlTags;
-  }
-
-  public boolean getXmlTags() {
-    return configuration.XmlTags;
-  }
-
-  /**
-   * XmlOut - create output as XML
-   * @see org.w3c.tidy.Configuration#XmlOut
-   */
-
-  public void setXmlOut(boolean XmlOut) {
-    configuration.XmlOut = XmlOut;
-  }
-
-  public boolean getXmlOut() {
-    return configuration.XmlOut;
-  }
-
-  /**
-   * XHTML - output extensible HTML
-   * @see org.w3c.tidy.Configuration#xHTML
-   */
-
-  public void setXHTML(boolean xHTML) {
-    configuration.xHTML = xHTML;
-  }
-
-  public boolean getXHTML() {
-    return configuration.xHTML;
-  }
-
-  /**
-   * RawOut - avoid mapping values > 127 to entities
-   * @see org.w3c.tidy.Configuration#RawOut
-   */
-
-  public void setRawOut(boolean RawOut) {
-    configuration.RawOut = RawOut;
-  }
-
-  public boolean getRawOut() {
-    return configuration.RawOut;
-  }
-
-  /**
-   * UpperCaseTags - output tags in upper not lower case
-   * @see org.w3c.tidy.Configuration#UpperCaseTags
-   */
-
-  public void setUpperCaseTags(boolean UpperCaseTags) {
-    configuration.UpperCaseTags = UpperCaseTags;
-  }
-
-  public boolean getUpperCaseTags() {
-    return configuration.UpperCaseTags;
-  }
-
-  /**
-   * UpperCaseAttrs - output attributes in upper not lower case
-   * @see org.w3c.tidy.Configuration#UpperCaseAttrs
-   */
-
-  public void setUpperCaseAttrs(boolean UpperCaseAttrs) {
-    configuration.UpperCaseAttrs = UpperCaseAttrs;
-  }
-
-  public boolean getUpperCaseAttrs() {
-    return configuration.UpperCaseAttrs;
-  }
-
-  /**
-   * MakeClean - remove presentational clutter
-   * @see org.w3c.tidy.Configuration#MakeClean
-   */
-
-  public void setMakeClean(boolean MakeClean) {
-    configuration.MakeClean = MakeClean;
-  }
-
-  public boolean getMakeClean() {
-    return configuration.MakeClean;
-  }
-
-  /**
-   * BreakBeforeBR - o/p newline before &lt;br&gt; or not?
-   * @see org.w3c.tidy.Configuration#BreakBeforeBR
-   */
-
-  public void setBreakBeforeBR(boolean BreakBeforeBR) {
-    configuration.BreakBeforeBR = BreakBeforeBR;
-  }
-
-  public boolean getBreakBeforeBR() {
-    return configuration.BreakBeforeBR;
-  }
-
-  /**
-   * BurstSlides - create slides on each h2 element
-   * @see org.w3c.tidy.Configuration#BurstSlides
-   */
-
-  public void setBurstSlides(boolean BurstSlides) {
-    configuration.BurstSlides = BurstSlides;
-  }
-
-  public boolean getBurstSlides() {
-    return configuration.BurstSlides;
-  }
-
-  /**
-   * NumEntities - use numeric entities
-   * @see org.w3c.tidy.Configuration#NumEntities
-   */
-
-  public void setNumEntities(boolean NumEntities) {
-    configuration.NumEntities = NumEntities;
-  }
-
-  public boolean getNumEntities() {
-    return configuration.NumEntities;
-  }
-
-  /**
-   * QuoteMarks - output " marks as &amp;quot;
-   * @see org.w3c.tidy.Configuration#QuoteMarks
-   */
-
-  public void setQuoteMarks(boolean QuoteMarks) {
-    configuration.QuoteMarks = QuoteMarks;
-  }
-
-  public boolean getQuoteMarks() {
-    return configuration.QuoteMarks;
-  }
-
-  /**
-   * QuoteNbsp - output non-breaking space as entity
-   * @see org.w3c.tidy.Configuration#QuoteNbsp
-   */
-
-  public void setQuoteNbsp(boolean QuoteNbsp) {
-    configuration.QuoteNbsp = QuoteNbsp;
-  }
-
-  public boolean getQuoteNbsp() {
-    return configuration.QuoteNbsp;
-  }
-
-  /**
-   * QuoteAmpersand - output naked ampersand as &amp;
-   * @see org.w3c.tidy.Configuration#QuoteAmpersand
-   */
-
-  public void setQuoteAmpersand(boolean QuoteAmpersand) {
-    configuration.QuoteAmpersand = QuoteAmpersand;
-  }
-
-  public boolean getQuoteAmpersand() {
-    return configuration.QuoteAmpersand;
-  }
-
-  /**
-   * WrapAttVals - wrap within attribute values
-   * @see org.w3c.tidy.Configuration#WrapAttVals
-   */
-
-  public void setWrapAttVals(boolean WrapAttVals) {
-    configuration.WrapAttVals = WrapAttVals;
-  }
-
-  public boolean getWrapAttVals() {
-    return configuration.WrapAttVals;
-  }
-
-  /**
-   * WrapScriptlets - wrap within JavaScript string literals
-   * @see org.w3c.tidy.Configuration#WrapScriptlets
-   */
-
-  public void setWrapScriptlets(boolean WrapScriptlets) {
-    configuration.WrapScriptlets = WrapScriptlets;
-  }
-
-  public boolean getWrapScriptlets() {
-    return configuration.WrapScriptlets;
-  }
-
-  /**
-   * WrapSection - wrap within &lt;![ ... ]&gt; section tags
-   * @see org.w3c.tidy.Configuration#WrapSection
-   */
-
-  public void setWrapSection(boolean WrapSection) {
-    configuration.WrapSection = WrapSection;
-  }
-
-  public boolean getWrapSection() {
-    return configuration.WrapSection;
-  }
-
-  /**
-   * AltText - default text for alt attribute
-   * @see org.w3c.tidy.Configuration#altText
-   */
-
-  public void setAltText(String altText) {
-    configuration.altText = altText;
-  }
-
-  public String getAltText() {
-    return configuration.altText;
-  }
-
-  /**
-   * Slidestyle - style sheet for slides
-   * @see org.w3c.tidy.Configuration#slidestyle
-   */
-
-  public void setSlidestyle(String slidestyle) {
-    configuration.slidestyle = slidestyle;
-  }
-
-  public String getSlidestyle() {
-    return configuration.slidestyle;
-  }
-
-  /**
-   * XmlPi - add &lt;?xml?&gt; for XML docs
-   * @see org.w3c.tidy.Configuration#XmlPi
-   */
-
-  public void setXmlPi(boolean XmlPi) {
-    configuration.XmlPi = XmlPi;
-  }
-
-  public boolean getXmlPi() {
-    return configuration.XmlPi;
-  }
-
-  /**
-   * DropFontTags - discard presentation tags
-   * @see org.w3c.tidy.Configuration#DropFontTags
-   */
-
-  public void setDropFontTags(boolean DropFontTags) {
-    configuration.DropFontTags = DropFontTags;
-  }
-
-  public boolean getDropFontTags() {
-    return configuration.DropFontTags;
-  }
-
-  /**
-   * DropEmptyParas - discard empty p elements
-   * @see org.w3c.tidy.Configuration#DropEmptyParas
-   */
-
-  public void setDropEmptyParas(boolean DropEmptyParas) {
-    configuration.DropEmptyParas = DropEmptyParas;
-  }
-
-  public boolean getDropEmptyParas() {
-    return configuration.DropEmptyParas;
-  }
-
-  /**
-   * FixComments - fix comments with adjacent hyphens
-   * @see org.w3c.tidy.Configuration#FixComments
-   */
-
-  public void setFixComments(boolean FixComments) {
-    configuration.FixComments = FixComments;
-  }
-
-  public boolean getFixComments() {
-    return configuration.FixComments;
-  }
-
-  /**
-   * WrapAsp - wrap within ASP pseudo elements
-   * @see org.w3c.tidy.Configuration#WrapAsp
-   */
-
-  public void setWrapAsp(boolean WrapAsp) {
-    configuration.WrapAsp = WrapAsp;
-  }
-
-  public boolean getWrapAsp() {
-    return configuration.WrapAsp;
-  }
-
-  /**
-   * WrapJste - wrap within JSTE pseudo elements
-   * @see org.w3c.tidy.Configuration#WrapJste
-   */
-
-  public void setWrapJste(boolean WrapJste) {
-    configuration.WrapJste = WrapJste;
-  }
-
-  public boolean getWrapJste() {
-    return configuration.WrapJste;
-  }
-
-  /**
-   * WrapPhp - wrap within PHP pseudo elements
-   * @see org.w3c.tidy.Configuration#WrapPhp
-   */
-
-  public void setWrapPhp(boolean WrapPhp) {
-    configuration.WrapPhp = WrapPhp;
-  }
-
-  public boolean getWrapPhp() {
-    return configuration.WrapPhp;
-  }
-
-  /**
-   * FixBackslash - fix URLs by replacing \ with /
-   * @see org.w3c.tidy.Configuration#FixBackslash
-   */
-
-  public void setFixBackslash(boolean FixBackslash) {
-    configuration.FixBackslash = FixBackslash;
-  }
-
-  public boolean getFixBackslash() {
-    return configuration.FixBackslash;
-  }
-
-  /**
-   * IndentAttributes - newline+indent before each attribute
-   * @see org.w3c.tidy.Configuration#IndentAttributes
-   */
-
-  public void setIndentAttributes(boolean IndentAttributes) {
-    configuration.IndentAttributes = IndentAttributes;
-  }
-
-  public boolean getIndentAttributes() {
-    return configuration.IndentAttributes;
-  }
-
-  /**
-   * DocType - user specified doctype
-   * omit | auto | strict | loose | <i>fpi</i>
-   * where the <i>fpi</i> is a string similar to
-   *    &quot;-//ACME//DTD HTML 3.14159//EN&quot;
-   * Note: for <i>fpi</i> include the double-quotes in the string.
-   * @see org.w3c.tidy.Configuration#docTypeStr
-   * @see org.w3c.tidy.Configuration#docTypeMode
-   */
-
-  public void setDocType(String doctype) {
-    if (doctype != null)
-      configuration.docTypeStr = configuration.parseDocType(doctype, "doctype");
-  }
-
-  public String getDocType() {
-    String result = null;
-    switch (configuration.docTypeMode) {
-      case Configuration.DOCTYPE_OMIT :
-        result = "omit";
-        break;
-      case Configuration.DOCTYPE_AUTO :
-        result = "auto";
-        break;
-      case Configuration.DOCTYPE_STRICT :
-        result = "strict";
-        break;
-      case Configuration.DOCTYPE_LOOSE :
-        result = "loose";
-        break;
-      case Configuration.DOCTYPE_USER :
-        result = configuration.docTypeStr;
-        break;
-    }
-    return result;
-  }
-
-  /**
-   * LogicalEmphasis - replace i by em and b by strong
-   * @see org.w3c.tidy.Configuration#LogicalEmphasis
-   */
-
-  public void setLogicalEmphasis(boolean LogicalEmphasis) {
-    configuration.LogicalEmphasis = LogicalEmphasis;
-  }
-
-  public boolean getLogicalEmphasis() {
-    return configuration.LogicalEmphasis;
-  }
-
-  /**
-   * XmlPIs - if set to true PIs must end with ?>
-   * @see org.w3c.tidy.Configuration#XmlPIs
-   */
-
-  public void setXmlPIs(boolean XmlPIs) {
-    configuration.XmlPIs = XmlPIs;
-  }
-
-  public boolean getXmlPIs() {
-    return configuration.XmlPIs;
-  }
-
-  /**
-   * EncloseText - if true text at body is wrapped in &lt;p&gt;'s
-   * @see org.w3c.tidy.Configuration#EncloseBodyText
-   */
-
-  public void setEncloseText(boolean EncloseText) {
-    configuration.EncloseBodyText = EncloseText;
-  }
-
-  public boolean getEncloseText() {
-    return configuration.EncloseBodyText;
-  }
-
-  /**
-   * EncloseBlockText - if true text in blocks is wrapped in &lt;p&gt;'s
-   * @see org.w3c.tidy.Configuration#EncloseBlockText
-   */
-
-  public void setEncloseBlockText(boolean EncloseBlockText) {
-    configuration.EncloseBlockText = EncloseBlockText;
-  }
-
-  public boolean getEncloseBlockText() {
-    return configuration.EncloseBlockText;
-  }
-
-  /**
-   * KeepFileTimes - if true last modified time is preserved<br>
-   * <b>this is NOT supported at this time.</b>
-   * @see org.w3c.tidy.Configuration#KeepFileTimes
-   */
-
-  public void setKeepFileTimes(boolean KeepFileTimes) {
-    configuration.KeepFileTimes = KeepFileTimes;
-  }
-
-  public boolean getKeepFileTimes() {
-    return configuration.KeepFileTimes;
-  }
-
-  /**
-   * Word2000 - draconian cleaning for Word2000
-   * @see org.w3c.tidy.Configuration#Word2000
-   */
-
-  public void setWord2000(boolean Word2000) {
-    configuration.Word2000 = Word2000;
-  }
-
-  public boolean getWord2000() {
-    return configuration.Word2000;
-  }
-
-  /**
-   * TidyMark - add meta element indicating tidied doc
-   * @see org.w3c.tidy.Configuration#TidyMark
-   */
-
-  public void setTidyMark(boolean TidyMark) {
-    configuration.TidyMark = TidyMark;
-  }
-
-  public boolean getTidyMark() {
-    return configuration.TidyMark;
-  }
-
-  /**
-   * XmlSpace - if set to yes adds xml:space attr as needed
-   * @see org.w3c.tidy.Configuration#XmlSpace
-   */
-
-  public void setXmlSpace(boolean XmlSpace) {
-    configuration.XmlSpace = XmlSpace;
-  }
-
-  public boolean getXmlSpace() {
-    return configuration.XmlSpace;
-  }
-
-  /**
-   * Emacs - if true format error output for GNU Emacs
-   * @see org.w3c.tidy.Configuration#Emacs
-   */
-
-  public void setEmacs(boolean Emacs) {
-    configuration.Emacs = Emacs;
-  }
-
-  public boolean getEmacs() {
-    return configuration.Emacs;
-  }
-
-  /**
-   * LiteralAttribs - if true attributes may use newlines
-   * @see org.w3c.tidy.Configuration#LiteralAttribs
-   */
-
-  public void setLiteralAttribs(boolean LiteralAttribs) {
-    configuration.LiteralAttribs = LiteralAttribs;
-  }
-
-  public boolean getLiteralAttribs() {
-    return configuration.LiteralAttribs;
-  }
-
-  /**
-   * InputStreamName - the name of the input stream (printed in the
-   * header information).
-   */
-  public void setInputStreamName(String name) {
-    if (name != null)
-      inputStreamName = name;
-  }
-
-  public String getInputStreamName() {
-    return inputStreamName;
-  }
-
-  /**
-   * Sets the configuration from a configuration file.
-   */
-
-  public void setConfigurationFromFile(String filename) {
-    configuration.parseFile(filename);
-  }
-
-  /**
-   * Sets the configuration from a properties object.
-   */
-
-  public void setConfigurationFromProps(Properties props) {
-    configuration.addProps(props);
-  }
-
-  /**
-   * first time initialization which should
-   * precede reading the command line
-   */
-
-  private void init() {
-    configuration = new Configuration();
-    if (configuration == null)
-      return;
-
-    AttributeTable at = AttributeTable.getDefaultAttributeTable();
-    if (at == null)
-      return;
-    TagTable tt = new TagTable();
-    if (tt == null)
-      return;
-    tt.setConfiguration(configuration);
-    configuration.tt = tt;
-    EntityTable et = EntityTable.getDefaultEntityTable();
-    if (et == null)
-      return;
-
-    /* Unnecessary - same initial values in Configuration
-    Configuration.XmlTags       = false;
-    Configuration.XmlOut        = false;
-    Configuration.HideEndTags   = false;
-    Configuration.UpperCaseTags = false;
-    Configuration.MakeClean     = false;
-    Configuration.writeback     = false;
-    Configuration.OnlyErrors    = false;
-    */
-
-    configuration.errfile = null;
-    stderr = new PrintWriter(System.err, true);
-    errout = stderr;
-    initialized = true;
-  }
-
-  /**
-   * Parses InputStream in and returns the root Node.
-   * If out is non-null, pretty prints to OutputStream out.
-   */
-
-  public Node parse(IFile iFile, InputStream in, OutputStream out) {
-    Node document = null;
-
-    try {
-      iFile.deleteMarkers(IMarker.PROBLEM, false, 0);
-      document = parse(iFile, in, null, out);
-    } catch (CoreException e) {
-    } catch (FileNotFoundException fnfe) {
-    } catch (IOException e) {
-    }
-
-    return document;
-  }
-
-  /**
-   * Internal routine that actually does the parsing.  The caller
-   * can pass either an InputStream or file name.  If both are passed,
-   * the file name is preferred.
-   */
-
-  private Node parse(IFile iFile, InputStream in, String file, OutputStream out) throws FileNotFoundException, IOException {
-    Lexer lexer;
-    Node document = null;
-    Node doctype;
-    Out o = new OutImpl(); /* normal output stream */
-    PPrint pprint;
-
-    if (!initialized)
-      return null;
-
-    if (errout == null)
-      return null;
-
-    parseErrors = 0;
-    parseWarnings = 0;
-
-    /* ensure config is self-consistent */
-    configuration.adjust();
-
-    if (file != null) {
-      in = new FileInputStream(file);
-      inputStreamName = file;
-    } else if (in == null) {
-      in = System.in;
-      inputStreamName = "stdin";
-    }
-
-    if (in != null) {
-      lexer = new Lexer(iFile,new StreamInImpl(in, configuration.CharEncoding, configuration.tabsize), configuration);
-      lexer.errout = errout;
-
-      /*
-        store pointer to lexer in input stream
-        to allow character encoding errors to be
-        reported
-      */
-      lexer.in.lexer = lexer;
-
-      /* Tidy doesn't alter the doctype for generic XML docs */
-      if (configuration.XmlTags)
-        document = ParserImpl.parseXMLDocument(lexer);
-      else {
-        lexer.warnings = 0;
-        if (!configuration.Quiet)
-          Report.helloMessage(errout, Report.RELEASE_DATE, inputStreamName);
-
-        document = ParserImpl.parseDocument(lexer);
-
-        if (!document.checkNodeIntegrity()) {
-          Report.badTree(errout);
-          return null;
-        }
-
-        Clean cleaner = new Clean(configuration.tt);
-
-        /* simplifies <b><b> ... </b> ...</b> etc. */
-        cleaner.nestedEmphasis(document);
-
-        /* cleans up <dir>indented text</dir> etc. */
-        cleaner.list2BQ(document);
-        cleaner.bQ2Div(document);
-
-        /* replaces i by em and b by strong */
-        if (configuration.LogicalEmphasis)
-          cleaner.emFromI(document);
-
-        if (configuration.Word2000 && cleaner.isWord2000(document, configuration.tt)) {
-          /* prune Word2000's <![if ...]> ... <![endif]> */
-          cleaner.dropSections(lexer, document);
-
-          /* drop style & class attributes and empty p, span elements */
-          cleaner.cleanWord2000(lexer, document);
-        }
-
-        /* replaces presentational markup by style rules */
-        if (configuration.MakeClean || configuration.DropFontTags)
-          cleaner.cleanTree(lexer, document);
-
-        if (!document.checkNodeIntegrity()) {
-          Report.badTree(errout);
-          return null;
-        }
-        doctype = document.findDocType();
-        if (document.content != null) {
-          if (configuration.xHTML)
-            lexer.setXHTMLDocType(document);
-          else
-            lexer.fixDocType(document);
-
-          if (configuration.TidyMark)
-            lexer.addGenerator(document);
-        }
-
-        /* ensure presence of initial <?XML version="1.0"?> */
-        if (configuration.XmlOut && configuration.XmlPi)
-          lexer.fixXMLPI(document);
-
-        if (!configuration.Quiet && document.content != null) {
-          Report.reportVersion(errout, lexer, inputStreamName, doctype);
-          Report.reportNumWarnings(errout, lexer);
-        }
-      }
-
-      parseWarnings = lexer.warnings;
-      parseErrors = lexer.errors;
-
-      // Try to close the InputStream but only if if we created it.
-
-      if ((file != null) && (in != System.in)) {
-        try {
-          in.close();
-        } catch (IOException e) {
-        }
-      }
-
-      if (lexer.errors > 0)
-        Report.needsAuthorIntervention(errout);
-
-      o.state = StreamIn.FSM_ASCII;
-      o.encoding = configuration.CharEncoding;
-
-      if (!configuration.OnlyErrors && lexer.errors == 0) {
-        if (configuration.BurstSlides) {
-          Node body;
-
-          body = null;
-          /*
-             remove doctype to avoid potential clash with
-             markup introduced when bursting into slides
-          */
-          /* discard the document type */
-          doctype = document.findDocType();
-
-          if (doctype != null)
-            Node.discardElement(doctype);
-
-          /* slides use transitional features */
-          lexer.versions |= Dict.VERS_HTML40_LOOSE;
-
-          /* and patch up doctype to match */
-          if (configuration.xHTML)
-            lexer.setXHTMLDocType(document);
-          else
-            lexer.fixDocType(document);
-
-          /* find the body element which may be implicit */
-          body = document.findBody(configuration.tt);
-
-          if (body != null) {
-            pprint = new PPrint(configuration);
-            Report.reportNumberOfSlides(errout, pprint.countSlides(body));
-            pprint.createSlides(lexer, document);
-          } else
-            Report.missingBody(errout);
-        } else if (configuration.writeback && (file != null)) {
-          try {
-            pprint = new PPrint(configuration);
-            o.out = new FileOutputStream(file);
-
-            if (configuration.XmlTags)
-              pprint.printXMLTree(o, (short) 0, 0, lexer, document);
-            else
-              pprint.printTree(o, (short) 0, 0, lexer, document);
-
-            pprint.flushLine(o, 0);
-            o.out.close();
-          } catch (IOException e) {
-            errout.println(file + e.toString());
-          }
-        } else if (out != null) {
-          pprint = new PPrint(configuration);
-          o.out = out;
-
-          if (configuration.XmlTags)
-            pprint.printXMLTree(o, (short) 0, 0, lexer, document);
-          else
-            pprint.printTree(o, (short) 0, 0, lexer, document);
-
-          pprint.flushLine(o, 0);
-        }
-
-      }
-
-      Report.errorSummary(lexer);
-    }
-    return document;
-  }
-
-  /**
-   * Parses InputStream in and returns a DOM Document node.
-   * If out is non-null, pretty prints to OutputStream out.
-   */
-
-  public org.w3c.dom.Document parseDOM(IFile file, InputStream in, OutputStream out) {
-    Node document = parse(file, in, out);
-    if (document != null)
-      return (org.w3c.dom.Document) document.getAdapter();
-    else
-      return null;
-  }
-
-  /**
-   * Creates an empty DOM Document.
-   */
-
-  public static org.w3c.dom.Document createEmptyDocument() {
-    Node document = new Node(Node.RootNode, new byte[0], 0, 0);
-    Node node = new Node(Node.StartTag, new byte[0], 0, 0, "html", new TagTable());
-    if (document != null && node != null) {
-      Node.insertNodeAtStart(document, node);
-      return (org.w3c.dom.Document) document.getAdapter();
-    } else {
-      return null;
-    }
-  }
-
-  /**
-   * Pretty-prints a DOM Document.
-   */
-
-  public void pprint(org.w3c.dom.Document doc, OutputStream out) {
-    Out o = new OutImpl();
-    PPrint pprint;
-    Node document;
-
-    if (!(doc instanceof DOMDocumentImpl)) {
-      return;
-    }
-    document = ((DOMDocumentImpl) doc).adaptee;
-
-    o.state = StreamIn.FSM_ASCII;
-    o.encoding = configuration.CharEncoding;
-
-    if (out != null) {
-      pprint = new PPrint(configuration);
-      o.out = out;
-
-      if (configuration.XmlTags)
-        pprint.printXMLTree(o, (short) 0, 0, null, document);
-      else
-        pprint.printTree(o, (short) 0, 0, null, document);
-
-      pprint.flushLine(o, 0);
-    }
-  }
-
-  /**
-   * Command line interface to parser and pretty printer.
-   */
-
-  public static void main(String[] argv) {
-    int totalerrors = 0;
-    int totalwarnings = 0;
-    String file;
-    InputStream in;
-    String prog = "Tidy";
-    Node document;
-    Node doctype;
-    Lexer lexer;
-    String s;
-    Out out = new OutImpl(); /* normal output stream */
-    PPrint pprint;
-    int argc = argv.length + 1;
-    int argIndex = 0;
-    Tidy tidy;
-    Configuration configuration;
-    String arg;
-    String current_errorfile = "stderr";
-
-    tidy = new Tidy();
-    configuration = tidy.getConfiguration();
-
-    /* read command line */
-
-    while (argc > 0) {
-      if (argc > 1 && argv[argIndex].startsWith("-")) {
-        /* support -foo and --foo */
-        arg = argv[argIndex].substring(1);
-
-        if (arg.length() > 0 && arg.charAt(0) == '-')
-          arg = arg.substring(1);
-
-        if (arg.equals("xml"))
-          configuration.XmlTags = true;
-        else if (arg.equals("asxml") || arg.equals("asxhtml"))
-          configuration.xHTML = true;
-        else if (arg.equals("indent")) {
-          configuration.IndentContent = true;
-          configuration.SmartIndent = true;
-        } else if (arg.equals("omit"))
-          configuration.HideEndTags = true;
-        else if (arg.equals("upper"))
-          configuration.UpperCaseTags = true;
-        else if (arg.equals("clean"))
-          configuration.MakeClean = true;
-        else if (arg.equals("raw"))
-          configuration.CharEncoding = Configuration.RAW;
-        else if (arg.equals("ascii"))
-          configuration.CharEncoding = Configuration.ASCII;
-        else if (arg.equals("latin1"))
-          configuration.CharEncoding = Configuration.LATIN1;
-        else if (arg.equals("utf8"))
-          configuration.CharEncoding = Configuration.UTF8;
-        else if (arg.equals("iso2022"))
-          configuration.CharEncoding = Configuration.ISO2022;
-        else if (arg.equals("mac"))
-          configuration.CharEncoding = Configuration.MACROMAN;
-        else if (arg.equals("numeric"))
-          configuration.NumEntities = true;
-        else if (arg.equals("modify"))
-          configuration.writeback = true;
-        else if (arg.equals("change")) /* obsolete */
-          configuration.writeback = true;
-        else if (arg.equals("update")) /* obsolete */
-          configuration.writeback = true;
-        else if (arg.equals("errors"))
-          configuration.OnlyErrors = true;
-        else if (arg.equals("quiet"))
-          configuration.Quiet = true;
-        else if (arg.equals("slides"))
-          configuration.BurstSlides = true;
-        else if (arg.equals("help") || argv[argIndex].charAt(1) == '?' || argv[argIndex].charAt(1) == 'h') {
-          Report.helpText(new PrintWriter(System.out, true), prog);
-          System.exit(1);
-        } else if (arg.equals("config")) {
-          if (argc >= 3) {
-            configuration.parseFile(argv[argIndex + 1]);
-            --argc;
-            ++argIndex;
-          }
-        } else if (argv[argIndex].equals("-file") || argv[argIndex].equals("--file") || argv[argIndex].equals("-f")) {
-          if (argc >= 3) {
-            configuration.errfile = argv[argIndex + 1];
-            --argc;
-            ++argIndex;
-          }
-        } else if (argv[argIndex].equals("-wrap") || argv[argIndex].equals("--wrap") || argv[argIndex].equals("-w")) {
-          if (argc >= 3) {
-            configuration.wraplen = Integer.parseInt(argv[argIndex + 1]);
-            --argc;
-            ++argIndex;
-          }
-        } else if (argv[argIndex].equals("-version") || argv[argIndex].equals("--version") || argv[argIndex].equals("-v")) {
-          Report.showVersion(tidy.getErrout());
-          System.exit(0);
-        } else {
-          s = argv[argIndex];
-
-          for (int i = 1; i < s.length(); i++) {
-            if (s.charAt(i) == 'i') {
-              configuration.IndentContent = true;
-              configuration.SmartIndent = true;
-            } else if (s.charAt(i) == 'o')
-              configuration.HideEndTags = true;
-            else if (s.charAt(i) == 'u')
-              configuration.UpperCaseTags = true;
-            else if (s.charAt(i) == 'c')
-              configuration.MakeClean = true;
-            else if (s.charAt(i) == 'n')
-              configuration.NumEntities = true;
-            else if (s.charAt(i) == 'm')
-              configuration.writeback = true;
-            else if (s.charAt(i) == 'e')
-              configuration.OnlyErrors = true;
-            else if (s.charAt(i) == 'q')
-              configuration.Quiet = true;
-            else
-              Report.unknownOption(tidy.getErrout(), s.charAt(i));
-          }
-        }
-
-        --argc;
-        ++argIndex;
-        continue;
-      }
-
-      /* ensure config is self-consistent */
-      configuration.adjust();
-
-      /* user specified error file */
-      if (configuration.errfile != null) {
-        /* is it same as the currently opened file? */
-        if (!configuration.errfile.equals(current_errorfile)) {
-          /* no so close previous error file */
-
-          if (tidy.getErrout() != tidy.getStderr())
-            tidy.getErrout().close();
-
-          /* and try to open the new error file */
-          try {
-            tidy.setErrout(new PrintWriter(new FileWriter(configuration.errfile), true));
-            current_errorfile = configuration.errfile;
-          } catch (IOException e) {
-            /* can't be opened so fall back to stderr */
-            current_errorfile = "stderr";
-            tidy.setErrout(tidy.getStderr());
-          }
-        }
-      }
-
-      if (argc > 1) {
-        file = argv[argIndex];
-      } else {
-        file = "stdin";
-      }
-
-      try {
-        document = tidy.parse(null, null, file, System.out);
-        totalwarnings += tidy.parseWarnings;
-        totalerrors += tidy.parseErrors;
-      } catch (FileNotFoundException fnfe) {
-        Report.unknownFile(tidy.getErrout(), prog, file);
-      } catch (IOException ioe) {
-        Report.unknownFile(tidy.getErrout(), prog, file);
-      }
-
-      --argc;
-      ++argIndex;
-
-      if (argc <= 1)
-        break;
-    }
-
-    if (totalerrors + totalwarnings > 0)
-      Report.generalInfo(tidy.getErrout());
-
-    if (tidy.getErrout() != tidy.getStderr())
-      tidy.getErrout().close();
-
-    /* return status can be used by scripts */
-
-    if (totalerrors > 0)
-      System.exit(2);
-
-    if (totalwarnings > 0)
-      System.exit(1);
-
-    /* 0 signifies all is ok */
-    System.exit(0);
-  }
-}