📄 java2xhtml.java
字号:
{ // compute spaceLength so a line can be drawn while ((presentIndex != (bufferIn.length() - 1)) && ((Character.isSpaceChar( bufferIn.charAt(presentIndex))) || (bufferIn.charAt(presentIndex) == '\t'))) { // for each tab, insert tabSize spaces if (bufferIn.charAt(presentIndex) == '\t') { for (int i = 0; i < tabSize; i++) { bufferIn.insert(presentIndex + 1, " "); } presentIndex++; continue; } if (' ' == bufferIn.charAt(presentIndex)) { // read a space so place a space bufferOut.append(" "); spaceLength += (" ").length(); } else { // a white space character was read bufferOut.append(bufferIn.charAt( presentIndex)); ++spaceLength; } presentIndex++; } // check if line is empty // (no printable characters on line) if ((presentIndex == (bufferIn.length() - 1)) || (Character.isWhitespace(bufferIn.charAt( presentIndex)))) { spaceLength = 0; } // draw the line if (spaceLength > 1) { bufferOut.insert((bufferOut.length() - spaceLength), "<span class=" + "\"modulusLineStyle\">"); bufferOut.insert((bufferOut.length() - (" ").length()), "</span>"); } spaceLength = 0; } } else { // line numbers are in lineNumberColor bufferOut.append("<span class=\"" + lineNumberStyle + "\">"); bufferOut.append(codeLineNumber); bufferOut.append(":</span> "); } } isNewLine = false; bufferOut.append("</a>"); } // a state machine presentChar = bufferIn.charAt(presentIndex); if ((Character.isJavaIdentifierPart(presentChar)) || ((State.IMPORT_NAME == presentState) && (presentChar == '*'))) { // this is an identifier bufferOut.append(presentChar); identifierLength++; continue; // keep adding characters until identifier is done } if (identifierLength > 0) { // identifier qualifiedIdentifierLength = qualifiedIdentifierLength + identifierLength; if (bufferIn.charAt(presentIndex) == '.') { // qualified identifier bufferOut.append(presentChar); qualifiedIdentifierLength++; identifierLength = 0; continue; // keep adding characters to qualified identifier } String identifier = bufferOut.substring(bufferOut.length() - identifierLength); if ((State.PARAM_VARIABLE == presentState)) { // any identifier after a param in a javadoc is assumed to // be a variable bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + variableStyle + "\">"); bufferOut.append("</span>"); presentState = State.JAVADOC; } else if (State.JAVADOC == presentState) { // in javadoc state if ((javadocTagCollection.contains(identifier)) && (bufferIn.charAt(presentIndex - (identifierLength + 1)) == '@')) { // identifier is a javadocTag bufferOut.insert(bufferOut.length() - identifierLength, "<span class=\"" + javadocTagStyle + "\">"); bufferOut.append("</span>"); if (("param").equals(identifier)) { // any identifier after a param is assumed to // be a variable, get into a state to do this presentState = State.PARAM_VARIABLE; } } } else if (State.IMPORT_NAME == presentState) { // import identifier bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + importNameStyle + "\">"); bufferOut.append("</span>"); presentState = State.TEXT; } else if (State.PACKAGE_NAME == presentState) { // package identifier bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + packageNameStyle + "\">"); bufferOut.append("</span>"); presentState = State.TEXT; } else if (State.TEXT == presentState) { if (keywordCollection.contains(identifier)) { // identifier is a keyword bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + keywordStyle + "\">"); bufferOut.append("</span>"); if (("import").equals(identifier)) { // anything after an import in text mode must be // an import name, so enter state to process this presentState = State.IMPORT_NAME; } else if (("package").equals(identifier)) { // anything after an package in text mode must be // an package name, so enter state to process this presentState = State.PACKAGE_NAME; } } else if (primitiveTypeCollection.contains(identifier)) { // identifier is a primitive type bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + primitiveTypeStyle + "\">"); bufferOut.append("</span>"); } else if ((identifier.equals(identifier.toUpperCase())) && (!(Character.isDigit(identifier.charAt(0))))) { // identifier is a constant bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + constantStyle + "\">"); bufferOut.append("</span>"); } else if (Character.isUpperCase(identifier.charAt(0))) { // identifier is a constructor or non-primitive type // eat white space saveIndex = presentIndex; while (Character.isWhitespace( bufferIn.charAt(saveIndex++))) { //empty body } if (bufferIn.charAt(--saveIndex) == '(') { // identifier is a constructor bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=" + "\"" + constructorStyle + "\">"); bufferOut.append("</span>"); } else { // identifier is a non-primitive type bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=" + "\"" + nonPrimitiveTypeStyle + "\">"); bufferOut.append("</span>"); } } else if (!(Character.isDigit(identifier.charAt(0)) || primitiveLiteralCollection.contains(identifier))) { // identifier is a method or a variable // eat white space saveIndex = presentIndex; while (Character.isWhitespace( bufferIn.charAt(saveIndex++))) { // empty body } --saveIndex; // identifier is a method if (bufferIn.charAt(saveIndex) == '(') { bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + methodStyle + "\">"); bufferOut.append("</span>"); } else if (bufferIn.charAt(saveIndex) == ',') { // comma seperated variables bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + variableStyle + "\">"); bufferOut.append("</span>"); } else { // a variable // take care of cases such as array[index].variable if (bufferIn.charAt(presentIndex - (qualifiedIdentifierLength + 1)) == '.') { qualifiedIdentifierLength++; } bufferOut.insert(bufferOut.length() - qualifiedIdentifierLength, "<span class=\"" + variableStyle + "\">"); bufferOut.append("</span>"); } } else { if (primitiveLiteralCollection.contains(identifier)) { // primitiveLiteral (boolean or null) bufferOut.insert(bufferOut.length() - identifierLength, "<span class=" + "\"" + primitiveLiteralStyle + "\">"); bufferOut.append("</span>"); } // a numeric literal else { if (((presentIndex - (qualifiedIdentifierLength + 1)) > 0) && (bufferIn.charAt(presentIndex - (qualifiedIdentifierLength + 1)) == '.'))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -