X-Git-Url: http://secure.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/html/HTMLFormatter.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/html/HTMLFormatter.java
new file mode 100644
index 0000000..fcdb34a
--- /dev/null
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/html/HTMLFormatter.java
@@ -0,0 +1,110 @@
+ package net.sourceforge.phpeclipse.phpeditor.html;
+
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
+import net.sourceforge.phpeclipse.phpeditor.PHPSourceViewerConfiguration;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.text.source.SourceViewer;
+
+/**
+ * Modified from the XMLFormatter. Some tags in HTML do not indent.
+ *
+ * @fixme The HTML parser cannot recognize < tag> as tag due to the extra space.
+ *
+ * @author chrisl
+ */
+public class HTMLFormatter implements IHTMLConstants {
+
+ ////////////////////////////////////////////////////////////////////////
+
+ private static final String NAME = "HTMLFormatter";
+ private static final boolean TRACE = false;
+// private static boolean VERBOSE = false;
+
+ private static Set fBLOCK_TAG_SET;
+ private static Set fSTART_TAG_SET;
+ static {
+ fBLOCK_TAG_SET = new HashSet();
+ for (int i = 0; i < BLOCK_TAGS.length; ++i)
+ fBLOCK_TAG_SET.add(BLOCK_TAGS[i]);
+ //
+ fSTART_TAG_SET = new HashSet();
+ for (int i = 0; i < START_TAGS.length; ++i)
+ fSTART_TAG_SET.add(START_TAGS[i]);
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ private PHPSourceViewerConfiguration fConfig;
+ private SourceViewer fViewer;
+ //
+ private PHPEditor fEditor;
+ private String fFilename;
+
+ ////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Constructor for XMLFormatter.
+ */
+ public HTMLFormatter(PHPSourceViewerConfiguration cf, SourceViewer viewer) {
+ fConfig=cf;
+ fViewer = viewer;
+ //
+ fEditor = fConfig.getEditor();
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+
+ /**
+ * Formats the String sourceString
,
+ * and returns a string containing the formatted version.
+ *
+ * @param string the string to format
+ * @param indentationLevel the initial indentation level, used
+ * to shift left/right the entire source fragment. An initial indentation
+ * level of zero has no effect.
+ * @param positions an array of positions to map. These are
+ * character-based source positions inside the original source,
+ * for which corresponding positions in the formatted source will
+ * be computed (so as to relocate elements associated with the original
+ * source). It updates the positions array with updated positions.
+ * If set to null
, then no positions are mapped.
+ * @param lineSeparator the line separator to use in formatted source,
+ * if set to null
, then the platform default one will be used.
+ * @return the formatted output string.
+ */
+ public String format(
+ String string,
+ int indentationLevel,
+ int[] positions,
+ String lineSeparator,
+ String inputname) {
+ StringWriter ret = new StringWriter(2048);
+ try {
+ if (PHPeclipsePlugin.DEBUG) {
+ System.err.println(NAME + ".format(): inputname=" + inputname);
+ }
+// TidyHTMLParser parser = new TidyHTMLParser(new TidyConfiguration(fEditor, fViewer));
+// parser.setCompactFormat(
+// ((Boolean) fViewer.getData(IConstants.KEY_COMPACT_FORMAT)).booleanValue());
+// parser.parse(new StringReader(string), inputname, new PrintWriter(ret));
+// if (parser.getParseErrors() != 0) {
+// PHPeclipsePlugin.log(IStatus.INFO, "Parse error");
+// return string;
+// }
+ return ret.toString();
+ } catch (Exception e) {
+ // PHPeclipsePlugin.error("Unknown parse error: "+e.getMessage(), null, fEditor.getEditorInput(), fViewer);
+ PHPeclipsePlugin.log(IStatus.ERROR, e.getMessage());
+ return string;
+ }
+ }
+
+}