hivemind-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ahue...@apache.org
Subject svn commit: r230544 [2/2] - in /jakarta/hivemind/trunk: examples/src/descriptor/META-INF/ examples/src/documentation/content/xdocs/hivemind-examples/ examples/src/java/com/panorama/startup/ examples/src/java/com/panorama/startup/impl/ examples/src/java...
Date Sat, 06 Aug 2005 11:57:42 GMT
Added: jakarta/hivemind/trunk/tools/forrest/src/org/apache/hivemind/tools/forrest/Xml2XmlRenderer.java
URL: http://svn.apache.org/viewcvs/jakarta/hivemind/trunk/tools/forrest/src/org/apache/hivemind/tools/forrest/Xml2XmlRenderer.java?rev=230544&view=auto
==============================================================================
--- jakarta/hivemind/trunk/tools/forrest/src/org/apache/hivemind/tools/forrest/Xml2XmlRenderer.java
(added)
+++ jakarta/hivemind/trunk/tools/forrest/src/org/apache/hivemind/tools/forrest/Xml2XmlRenderer.java
Sat Aug  6 04:56:53 2005
@@ -0,0 +1,144 @@
+// Copyright 2004, 2005 The Apache Software Foundation
+//
+// Licensed 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.
+
+package org.apache.hivemind.tools.forrest;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+
+import org.apache.cocoon.transformation.AbstractSAXTransformer;
+
+import com.uwyn.jhighlight.highlighter.XmlHighlighter;
+import com.uwyn.jhighlight.tools.StringUtils;
+
+/**
+ * Renders xml code as xml markup that can be transformed to html. Parses the code using
the
+ * JHighlight library and outputs the code embedded in special xml-elements that mark the
type of
+ * the tokens.
+ * 
+ * @author Achim Huegen
+ */
+public class Xml2XmlRenderer
+{
+
+    /**
+     * Processes xml code. Outputs the xml code by creating sax events in the sax transformer.
+     * 
+     * @param in
+     * @param sax
+     * @param spacesPerTab
+     * @throws Exception
+     */
+    public void process(InputStream in, AbstractSAXTransformer sax, int spacesPerTab)
+            throws Exception
+    {
+        XmlHighlighter highlighter = new XmlHighlighter();
+
+        Reader isr = new InputStreamReader(in);
+
+        BufferedReader r = new BufferedReader(isr);
+        String line;
+        String token;
+        int length;
+        int style;
+        String css_class;
+        String previous_class = null;
+
+        int previous_style = 0;
+
+        // Read source line by line and apply styles
+        while ((line = r.readLine()) != null)
+        {
+            line += "\n";
+            line = StringUtils.convertTabsToSpaces(line, spacesPerTab);
+
+            Reader lineReader = new StringReader(line);
+
+            highlighter.setReader(lineReader);
+
+            int index = 0;
+            while (index < line.length())
+            {
+                style = highlighter.getNextToken();
+                length = highlighter.getTokenLength();
+                token = line.substring(index, index + length);
+                
+                if (style != previous_style)
+                {
+                    css_class = getCssClass(style);
+
+                    // ignore whitespace
+                    if (token.equals("\n") || token.trim().length() == 0)
+                      css_class = null;
+                        
+                    if (css_class != null)
+                    {
+                        if (previous_class != null)
+                        {
+                            // System.out.println("</" + previous_class + ">");
+                            sax.sendEndElementEvent(previous_class);
+                        }
+                        // System.out.println("<" + css_class + ">");
+                        sax.sendStartElementEvent(css_class);
+                        previous_class = css_class;
+                        previous_style = style;
+                    }
+                }
+
+                sax.sendTextEvent(token);
+                index += length;
+            }
+
+        }
+        if (previous_class != null)
+        {
+            // System.out.println("</" + previous_class + ">");
+            sax.sendEndElementEvent(previous_class);
+        }
+    }
+
+    /**
+     * Map the jhighlighter styles to css styles
+     * 
+     * @param style
+     * @return css style
+     */
+    protected String getCssClass(int style)
+    {
+        switch (style)
+        {
+            case XmlHighlighter.PLAIN_STYLE:
+                return "xml-plain";
+            case XmlHighlighter.TAG_SYMBOLS:
+                return "xml-tag-symbols";
+            case XmlHighlighter.TAG_NAME:
+                return "xml-tag";
+            case XmlHighlighter.ATTRIBUTE_NAME:
+                return "xml-attribute";
+            case XmlHighlighter.ATTRIBUTE_VALUE:
+                return "xml-attribute-value";
+            case XmlHighlighter.CHAR_DATA:
+                return "xml-cdata";
+            case XmlHighlighter.COMMENT:
+                return "xml-comment";
+        }
+
+        return null;
+
+    }
+
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-cvs-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-cvs-help@jakarta.apache.org


Mime
View raw message