Improve implementation of TagTarget::toString

This commit is contained in:
Martchus 2016-06-06 20:46:30 +02:00
parent f9187c0682
commit f06b64bd99
1 changed files with 20 additions and 19 deletions

View File

@ -59,28 +59,29 @@ const char *tagTargetLevelName(TagTargetLevel tagTargetLevel)
*/ */
string TagTarget::toString(TagTargetLevel tagTargetLevel) const string TagTarget::toString(TagTargetLevel tagTargetLevel) const
{ {
list<string> parts; string levelString;
parts.emplace_back(); if(level()) {
string &level = parts.back(); levelString += "level ";
if(this->level()) { levelString += numberToString(level());
level.append("level " + numberToString(this->level()));
} }
string name; const char *defaultLevelName;
if(!levelName().empty()) { if(!levelName().empty() || *(defaultLevelName = tagTargetLevelName(tagTargetLevel))) {
name = levelName(); if(!levelString.empty()) {
} else { levelString += ' ';
name = tagTargetLevelName(tagTargetLevel);
}
if(!name.empty()) {
if(!level.empty()) {
level.append(" ");
} }
level.append("»"); levelString += '\'';
level.append(name); if(!levelName().empty()) {
level.append("«"); levelString += levelName();
} else {
levelString += defaultLevelName;
}
levelString += '\'';
} }
if(level.empty()) { list<string> parts;
level.append("undefined target"); if(levelString.empty()) {
parts.emplace_back("undefined target");
} else {
parts.emplace_back(move(levelString));
} }
for(auto v : tracks()) { for(auto v : tracks()) {
parts.emplace_back("track " + numberToString(v)); parts.emplace_back("track " + numberToString(v));