mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2024-12-12 10:03:51 +01:00
Move old FastWriter stuff out of new Builder
This commit is contained in:
parent
177b7b8f22
commit
28a20917b0
@ -94,6 +94,9 @@ writer->write( root );
|
||||
// If you like the defaults, you can insert directly into a stream.
|
||||
std::cout << root;
|
||||
|
||||
// If desired, remember to add a linefeed and flush.
|
||||
std::cout << std::endl;
|
||||
|
||||
// Of course, you can write to `std::ostringstream` if you prefer. Or
|
||||
// use `writeString()` for convenience.
|
||||
std::string document = Json::writeString( root, builder );
|
||||
|
@ -36,7 +36,7 @@ Usage:
|
||||
std::shared_ptr<StreamWriter> writer(
|
||||
builder.newStreamWriter(&std::cout));
|
||||
writer->write(value);
|
||||
std::cout.flush();
|
||||
std::cout << std::endl; // add lf and flush
|
||||
\endcode
|
||||
*/
|
||||
class JSON_API StreamWriter {
|
||||
@ -77,24 +77,6 @@ public:
|
||||
Default: "\t"
|
||||
*/
|
||||
Builder& withIndentation(std::string indentation);
|
||||
/** \brief Drop the "null" string from the writer's output for nullValues.
|
||||
* Strictly speaking, this is not valid JSON. But when the output is being
|
||||
* fed to a browser's Javascript, it makes for smaller output and the
|
||||
* browser can handle the output just fine.
|
||||
*/
|
||||
Builder& withDropNullPlaceholders(bool v);
|
||||
/** \brief Do not add \n at end of document.
|
||||
* Normally, we add an extra newline, just because.
|
||||
*/
|
||||
Builder& withOmitEndingLineFeed(bool v);
|
||||
/** \brief Add a space after ':'.
|
||||
* If indentation is non-empty, we surround colon with whitespace,
|
||||
* e.g. " : "
|
||||
* This will add back the trailing space when there is no indentation.
|
||||
* This seems dubious when the entire document is on a single line,
|
||||
* but we leave this here to repduce the behavior of the old `FastWriter`.
|
||||
*/
|
||||
Builder& withEnableYAMLCompatibility(bool v);
|
||||
|
||||
/// Do not take ownership of sout, but maintain a reference.
|
||||
StreamWriter* newStreamWriter(std::ostream* sout) const;
|
||||
|
@ -963,25 +963,16 @@ class StreamWriterBuilder {
|
||||
typedef StreamWriter::CommentStyle CommentStyle;
|
||||
CommentStyle cs_;
|
||||
std::string indentation_;
|
||||
bool dropNullPlaceholders_;
|
||||
bool omitEndingLineFeed_;
|
||||
bool enableYAMLCompatibility_;
|
||||
public:
|
||||
StreamWriterBuilder();
|
||||
virtual ~StreamWriterBuilder();
|
||||
virtual void setCommentStyle(CommentStyle cs);
|
||||
virtual void setIndentation(std::string indentation);
|
||||
virtual void setDropNullPlaceholders(bool v);
|
||||
virtual void setOmitEndingLineFeed(bool v);
|
||||
virtual void setEnableYAMLCompatibility(bool v);
|
||||
virtual StreamWriter* newStreamWriter(std::ostream* sout) const;
|
||||
};
|
||||
StreamWriterBuilder::StreamWriterBuilder()
|
||||
: cs_(CommentStyle::All)
|
||||
, indentation_("\t")
|
||||
, dropNullPlaceholders_(false)
|
||||
, omitEndingLineFeed_(false)
|
||||
, enableYAMLCompatibility_(false)
|
||||
{
|
||||
}
|
||||
StreamWriterBuilder::~StreamWriterBuilder()
|
||||
@ -996,36 +987,14 @@ void StreamWriterBuilder::setIndentation(std::string v)
|
||||
indentation_ = v;
|
||||
if (indentation_.empty()) cs_ = CommentStyle::None;
|
||||
}
|
||||
void StreamWriterBuilder::setDropNullPlaceholders(bool v)
|
||||
{
|
||||
dropNullPlaceholders_ = v;
|
||||
}
|
||||
void StreamWriterBuilder::setOmitEndingLineFeed(bool v)
|
||||
{
|
||||
omitEndingLineFeed_ = v;
|
||||
}
|
||||
void StreamWriterBuilder::setEnableYAMLCompatibility(bool v)
|
||||
{
|
||||
enableYAMLCompatibility_ = v;
|
||||
}
|
||||
StreamWriter* StreamWriterBuilder::newStreamWriter(std::ostream* stream) const
|
||||
{
|
||||
std::string colonSymbol = " : ";
|
||||
if (indentation_.empty()) {
|
||||
if (enableYAMLCompatibility_) {
|
||||
colonSymbol = ": ";
|
||||
} else {
|
||||
colonSymbol = ":";
|
||||
}
|
||||
colonSymbol = ":";
|
||||
}
|
||||
std::string nullSymbol = "null";
|
||||
if (dropNullPlaceholders_) {
|
||||
nullSymbol = "";
|
||||
}
|
||||
std::string endingLineFeedSymbol = "\n";
|
||||
if (omitEndingLineFeed_) {
|
||||
endingLineFeedSymbol = "";
|
||||
}
|
||||
std::string endingLineFeedSymbol = "";
|
||||
return new BuiltStyledStreamWriter(stream,
|
||||
indentation_, cs_,
|
||||
colonSymbol, nullSymbol, endingLineFeedSymbol);
|
||||
@ -1068,21 +1037,6 @@ StreamWriter::Builder& StreamWriter::Builder::withIndentation(std::string v)
|
||||
own_->setIndentation(v);
|
||||
return *this;
|
||||
}
|
||||
StreamWriter::Builder& StreamWriter::Builder::withDropNullPlaceholders(bool v)
|
||||
{
|
||||
own_->setDropNullPlaceholders(v);
|
||||
return *this;
|
||||
}
|
||||
StreamWriter::Builder& StreamWriter::Builder::withOmitEndingLineFeed(bool v)
|
||||
{
|
||||
own_->setOmitEndingLineFeed(v);
|
||||
return *this;
|
||||
}
|
||||
StreamWriter::Builder& StreamWriter::Builder::withEnableYAMLCompatibility(bool v)
|
||||
{
|
||||
own_->setEnableYAMLCompatibility(v);
|
||||
return *this;
|
||||
}
|
||||
StreamWriter* StreamWriter::Builder::newStreamWriter(
|
||||
std::ostream* sout) const
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user