Skip to content

Commit

Permalink
Use ConfigWriter class in repositoryutility.cpp
Browse files Browse the repository at this point in the history
refs #10989
  • Loading branch information
Crunsher authored and gunnarbeutner committed Feb 23, 2016
1 parent 2052edf commit 3b70bab
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 45 deletions.
2 changes: 1 addition & 1 deletion lib/base/configwriter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ class I2_BASE_API ConfigWriter
static void EmitFunctionCall(std::ostream& fp, const String& name, const Array::Ptr& arguments);

static const std::vector<String>& GetKeywords(void);
static String EscapeIcingaString(const String& str);
private:
static String EscapeIcingaString(const String& str);
ConfigWriter(void);
};

Expand Down
55 changes: 11 additions & 44 deletions lib/cli/repositoryutility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,7 @@ void RepositoryUtility::FormatChangelogEntry(std::ostream& fp, const Dictionary:
continue;

fp << std::setw(4) << " " << ConsoleColorTag(Console_ForegroundGreen) << kv.first << ConsoleColorTag(Console_Normal) << " = ";
FormatValue(fp, kv.second);
ConfigWriter::EmitValue(fp, 0, kv.second);
fp << "\n";
}
}
Expand All @@ -681,7 +681,9 @@ void RepositoryUtility::FormatChangelogEntry(std::ostream& fp, const Dictionary:
*/
void RepositoryUtility::SerializeObject(std::ostream& fp, const String& name, const String& type, const Dictionary::Ptr& object)
{
fp << "object " << type << " \"" << ConfigWriter::EscapeIcingaString(name) << "\" {\n";
fp << "object " << type << " ";
ConfigWriter::EmitString(fp, name);
fp << " {\n";

if (!object) {
fp << "}\n";
Expand All @@ -693,7 +695,9 @@ void RepositoryUtility::SerializeObject(std::ostream& fp, const String& name, co

ObjectLock olock(imports);
BOOST_FOREACH(const String& import, imports) {
fp << "\t" << "import \"" << import << "\"\n";
fp << "\t" << "import ";
ConfigWriter::EmitString(fp, import);
fp << '\n';
}
}

Expand All @@ -702,49 +706,12 @@ void RepositoryUtility::SerializeObject(std::ostream& fp, const String& name, co
if (kv.first == "import" || kv.first == "name" || kv.first == "__name") {
continue;
} else {
fp << "\t" << kv.first << " = ";
FormatValue(fp, kv.second);
fp << "\t";
ConfigWriter::EmitIdentifier(fp, kv.first, true);
fp << " = ";
ConfigWriter::EmitValue(fp, 1, kv.second);
}
fp << "\n";
}
fp << "}\n";
}

void RepositoryUtility::FormatValue(std::ostream& fp, const Value& val)
{
if (val.IsObjectType<Array>()) {
FormatArray(fp, val);
return;
}

if (val.IsString()) {
fp << "\"" << ConfigWriter::EscapeIcingaString(val) << "\"";
return;
}

fp << ConfigWriter::EscapeIcingaString(val);
}

void RepositoryUtility::FormatArray(std::ostream& fp, const Array::Ptr& arr)
{
bool first = true;

fp << "[ ";

if (arr) {
ObjectLock olock(arr);
BOOST_FOREACH(const Value& value, arr) {
if (first)
first = false;
else
fp << ", ";

FormatValue(fp, value);
}
}

if (!first)
fp << " ";

fp << "]";
}

0 comments on commit 3b70bab

Please sign in to comment.