Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
dmlloyd committed Jan 23, 2025
1 parent 05676f8 commit 6665862
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
*/
final class FormattingXMLStreamWriter implements XMLStreamWriter {
private final XMLStreamWriter delegate;
boolean pendingBreak = false;
int level = 0;

FormattingXMLStreamWriter(final XMLStreamWriter delegate) {
Expand All @@ -18,42 +19,42 @@ final class FormattingXMLStreamWriter implements XMLStreamWriter {
public void writeStartElement(final String localName) throws XMLStreamException {
indent();
delegate.writeStartElement(localName);
delegate.writeCharacters("\n");
pendingBreak = true;
level++;
}

public void writeStartElement(final String namespaceURI, final String localName) throws XMLStreamException {
indent();
delegate.writeStartElement(namespaceURI, localName);
delegate.writeCharacters("\n");
pendingBreak = true;
level++;
}

public void writeStartElement(final String prefix, final String localName, final String namespaceURI)
throws XMLStreamException {
indent();
delegate.writeStartElement(prefix, namespaceURI, localName);
delegate.writeCharacters("\n");
pendingBreak = true;
level++;
}

public void writeEmptyElement(final String namespaceURI, final String localName) throws XMLStreamException {
indent();
delegate.writeEmptyElement(namespaceURI, localName);
delegate.writeCharacters("\n");
pendingBreak = true;
}

public void writeEmptyElement(final String prefix, final String localName, final String namespaceURI)
throws XMLStreamException {
indent();
delegate.writeEmptyElement(prefix, namespaceURI, localName);
delegate.writeCharacters("\n");
pendingBreak = true;
}

public void writeEmptyElement(final String localName) throws XMLStreamException {
indent();
delegate.writeEmptyElement(localName);
delegate.writeCharacters("\n");
pendingBreak = true;
}

public void writeEndElement() throws XMLStreamException {
Expand All @@ -64,6 +65,7 @@ public void writeEndElement() throws XMLStreamException {
}

public void writeEndDocument() throws XMLStreamException {
checkBreak();
delegate.writeEndDocument();
}

Expand Down Expand Up @@ -104,47 +106,55 @@ public void writeComment(final String data) throws XMLStreamException {
}

public void writeProcessingInstruction(final String target) throws XMLStreamException {
checkBreak();
delegate.writeProcessingInstruction(target);
}

public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException {
checkBreak();
delegate.writeProcessingInstruction(target, data);
}

public void writeCData(final String data) throws XMLStreamException {
checkBreak();
delegate.writeCData(data);
}

public void writeDTD(final String dtd) throws XMLStreamException {
checkBreak();
delegate.writeDTD(dtd);
}

public void writeEntityRef(final String name) throws XMLStreamException {
checkBreak();
delegate.writeEntityRef(name);
}

public void writeStartDocument() throws XMLStreamException {
checkBreak();
delegate.writeStartDocument();
delegate.writeCharacters("\n\n");
}

public void writeStartDocument(final String version) throws XMLStreamException {
checkBreak();
delegate.writeStartDocument(version);
delegate.writeCharacters("\n\n");
}

public void writeStartDocument(final String encoding, final String version) throws XMLStreamException {
checkBreak();
delegate.writeStartDocument(encoding, version);
delegate.writeCharacters("\n\n");
}

public void writeCharacters(final String text) throws XMLStreamException {
checkBreak();
delegate.writeCharacters(text);
}

public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException {
indent();
delegate.writeCharacters("\n");
delegate.writeCharacters(text, start, len);
}

Expand Down Expand Up @@ -173,8 +183,16 @@ public Object getProperty(final String name) throws IllegalArgumentException {
}

private void indent() throws XMLStreamException {
checkBreak();
for (int i = 0; i < level; i++) {
delegate.writeCharacters(" ");
}
}

private void checkBreak() throws XMLStreamException {
if (pendingBreak) {
pendingBreak = false;
delegate.writeCharacters("\n");
}
}
}
Loading

0 comments on commit 6665862

Please sign in to comment.