Simplified JsonWriter and PrettyJsonWriter

This commit is contained in:
Benoit Blanchon
2014-11-06 13:52:33 +01:00
parent 79bfe731af
commit 1e02fabdec
2 changed files with 24 additions and 19 deletions

View File

@ -27,23 +27,26 @@ class JsonWriter {
// number of bytes written. // number of bytes written.
size_t bytesWritten() { return _length; } size_t bytesWritten() { return _length; }
void beginArray() { _length += _sink->write('['); } void beginArray() { write('['); }
void endArray() { _length += _sink->write(']'); } void endArray() { write(']'); }
void writeEmptyArray() { _length += _sink->print("[]"); } void writeEmptyArray() { write("[]"); }
void beginObject() { _length += _sink->write('{'); } void beginObject() { write('{'); }
void endObject() { _length += _sink->write('}'); } void endObject() { write('}'); }
void writeEmptyObject() { _length += _sink->print("{}"); } void writeEmptyObject() { write("{}"); }
void writeString(const char *value); void writeString(const char *value);
void writeInteger(long value); void writeInteger(long value);
void writeBoolean(bool value); void writeBoolean(bool value);
void writeDouble(double value, uint8_t decimals); void writeDouble(double value, uint8_t decimals);
void writeColon() { _length += _sink->write(':'); } void writeColon() { write(':'); }
void writeComma() { _length += _sink->write(','); } void writeComma() { write(','); }
protected: protected:
void write(char c) { _length += _sink->write(c); }
void write(const char *s) { _length += _sink->print(s); }
Print *_sink; Print *_sink;
size_t _length; size_t _length;
}; };

View File

@ -18,44 +18,46 @@ class PrettyJsonWriter : public JsonWriter {
: JsonWriter(sink), _indenter(sink) {} : JsonWriter(sink), _indenter(sink) {}
void beginArray() { void beginArray() {
_length += _sink->write('['); JsonWriter::beginArray();
indent(); indent();
} }
void endArray() { void endArray() {
unindent(); unindent();
_length += _sink->write(']'); JsonWriter::endArray();
} }
void writeColon() { _length += _sink->print(": "); } void writeColon() { write(": "); }
void writeComma() { void writeComma() {
_length += _sink->write(','); JsonWriter::writeComma();
_length += _indenter->println(); newline();
} }
void beginObject() { void beginObject() {
_length += _sink->write('{'); JsonWriter::beginObject();
indent(); indent();
} }
void endObject() { void endObject() {
unindent(); unindent();
_length += _sink->write('}'); JsonWriter::endObject();
} }
private: private:
IndentedPrint *_indenter;
void indent() { void indent() {
_indenter->indent(); _indenter->indent();
_length += _indenter->println(); newline();
} }
void unindent() { void unindent() {
_length += _indenter->println(); newline();
_indenter->unindent(); _indenter->unindent();
} }
void newline() { _length += _indenter->println(); }
IndentedPrint *_indenter;
}; };
} }
} }