📄 prettyprintwriter.java
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space
// Source File Name: PrettyPrintWriter.java
package org.apache.struts2.interceptor.debugging;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Stack;
public class PrettyPrintWriter
{
private final PrintWriter writer;
private final Stack elementStack;
private final char lineIndenter[];
private boolean tagInProgress;
private int depth;
private boolean readyForNewLine;
private boolean tagIsEmpty;
private String newLine;
private static final char NULL[] = "�".toCharArray();
private static final char AMP[] = "&".toCharArray();
private static final char LT[] = "<".toCharArray();
private static final char GT[] = ">".toCharArray();
private static final char SLASH_R[] = "
".toCharArray();
private static final char QUOT[] = """.toCharArray();
private static final char APOS[] = "'".toCharArray();
private static final char CLOSE[] = "</".toCharArray();
public PrettyPrintWriter(Writer writer, char lineIndenter[], String newLine)
{
elementStack = new Stack();
this.writer = new PrintWriter(writer);
this.lineIndenter = lineIndenter;
this.newLine = newLine;
}
public PrettyPrintWriter(Writer writer, char lineIndenter[])
{
this(writer, lineIndenter, "\n");
}
public PrettyPrintWriter(Writer writer, String lineIndenter, String newLine)
{
this(writer, lineIndenter.toCharArray(), newLine);
}
public PrettyPrintWriter(Writer writer, String lineIndenter)
{
this(writer, lineIndenter.toCharArray());
}
public PrettyPrintWriter(Writer writer)
{
this(writer, new char[] {
' ', ' '
});
}
public void startNode(String name)
{
tagIsEmpty = false;
finishTag();
writer.write(60);
writer.write(name);
elementStack.push(name);
tagInProgress = true;
depth++;
readyForNewLine = true;
tagIsEmpty = true;
}
public void setValue(String text)
{
readyForNewLine = false;
tagIsEmpty = false;
finishTag();
writeText(writer, text);
}
public void addAttribute(String key, String value)
{
writer.write(32);
writer.write(key);
writer.write(61);
writer.write(34);
writeAttributeValue(writer, value);
writer.write(34);
}
protected void writeAttributeValue(PrintWriter writer, String text)
{
writeText(text);
}
protected void writeText(PrintWriter writer, String text)
{
writeText(text);
}
private void writeText(String text)
{
int length = text.length();
for (int i = 0; i < length; i++)
{
char c = text.charAt(i);
switch (c)
{
case 0: // '\0'
writer.write(NULL);
break;
case 38: // '&'
writer.write(AMP);
break;
case 60: // '<'
writer.write(LT);
break;
case 62: // '>'
writer.write(GT);
break;
case 34: // '"'
writer.write(QUOT);
break;
case 39: // '\''
writer.write(APOS);
break;
case 13: // '\r'
writer.write(SLASH_R);
break;
default:
writer.write(c);
break;
}
}
}
public void endNode()
{
depth--;
if (tagIsEmpty)
{
writer.write(47);
readyForNewLine = false;
finishTag();
elementStack.pop();
} else
{
finishTag();
writer.write(CLOSE);
writer.write((String)elementStack.pop());
writer.write(62);
}
readyForNewLine = true;
if (depth == 0)
writer.flush();
}
private void finishTag()
{
if (tagInProgress)
writer.write(62);
tagInProgress = false;
if (readyForNewLine)
endOfLine();
readyForNewLine = false;
tagIsEmpty = false;
}
protected void endOfLine()
{
writer.write(newLine);
for (int i = 0; i < depth; i++)
writer.write(lineIndenter);
}
public void flush()
{
writer.flush();
}
public void close()
{
writer.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -