1 58 package org.apache.ecs.wml; 59 60 68 public class WMLOutRenderer 69 { 70 71 72 private static final String className = "WMLOutRenderer"; 73 74 private static final String [] indentArray = {"", " ", " ", " ", " ", " "}; 75 76 private static final char EXCLAMATION_MARK = '!'; 77 private static final char LESS_THEN = '<'; 78 private static final char GREATER_THEN = '>'; 79 private static final char SLASH = '/'; 80 private static final char QUESTION_MARK = '?'; 81 private static final int MAX_INDENT_LEVEL = indentArray.length - 1; 82 83 88 public static String parse(String inString) 89 { 90 boolean indentChanged = false; 91 boolean proceed = true; 92 char[] charArray = inString.toCharArray(); 93 int indentLevel = 0; 94 int lastLTIndex = 0; 95 int lastGTIndex = 0; 96 StringBuffer out = new StringBuffer (); 97 98 while (proceed) { 99 indentChanged = false; 100 lastLTIndex = inString.indexOf(LESS_THEN, lastGTIndex); 101 102 if (lastLTIndex != -1) { 103 if ((lastLTIndex - lastGTIndex) > 1) { 104 out.append(indentArray[indentLevel]).append( 105 inString.substring(lastGTIndex + 1, lastLTIndex)).append("\n"); 106 } 107 108 lastGTIndex = inString.indexOf(GREATER_THEN, lastLTIndex); 109 110 if (charArray[lastLTIndex + 1] == SLASH) { 111 indentChanged = true; 112 indentLevel--; 113 } 114 115 out.append(indentArray[indentLevel]).append( 116 inString.substring(lastLTIndex, lastGTIndex + 1)).append("\n"); 117 118 if (charArray[lastGTIndex - 1] != SLASH && 119 charArray[lastLTIndex + 1] != EXCLAMATION_MARK && 120 charArray[lastLTIndex + 1] != QUESTION_MARK && !indentChanged) { 121 indentLevel = (indentLevel < MAX_INDENT_LEVEL) ? 122 indentLevel + 1 : MAX_INDENT_LEVEL; 123 } 124 } else { 125 proceed = false; 126 } 127 } 128 129 return out.toString(); 130 } 131 } 132 | Popular Tags |