1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-19 16:59:35 +01:00

* Added an extra escape code to signal "unimportant" messages. If a tree only has

unimportant messages, it is collapsed by the default.
* Also added an optional integer argument to the escape code for opening a nesting 
  level to indicate lack of importance.  If set, the tree is collapsed by default.
This commit is contained in:
Eelco Dolstra 2004-03-18 21:04:14 +00:00
parent 84c617966b
commit 3f3c4cce5a
3 changed files with 46 additions and 9 deletions

View file

@ -1,3 +1,4 @@
#include <vector>
#include <iostream>
#include <cstdio>
#include <string>
@ -11,6 +12,9 @@ struct Decoder
string line;
bool inHeader;
int level;
vector<int> args;
bool newNumber;
int priority;
Decoder()
{
@ -18,6 +22,7 @@ struct Decoder
line = "";
inHeader = false;
level = 0;
priority = 1;
}
void pushChar(char c);
@ -39,9 +44,11 @@ void Decoder::pushChar(char c)
break;
case stEscape:
if (c == '[')
if (c == '[') {
state = stCSI;
else
args.clear();
newNumber = true;
} else
state = stTop; /* !!! wrong */
break;
@ -54,6 +61,7 @@ void Decoder::pushChar(char c)
level++;
inHeader = true;
cout << "<nest>" << endl;
priority = args.size() >= 1 ? args[0] : 1;
break;
case 'q':
if (line.size()) finishLine();
@ -63,7 +71,19 @@ void Decoder::pushChar(char c)
} else
cerr << "not enough nesting levels" << endl;
break;
case 's':
if (line.size()) finishLine();
priority = args.size() >= 1 ? args[0] : 1;
break;
}
} else if (c >= '0' && c <= '9') {
int n = 0;
if (!newNumber) {
n = args.back() * 10;
args.pop_back();
}
n += c - '0';
args.push_back(n);
}
break;
@ -76,7 +96,9 @@ void Decoder::finishLine()
string storeDir = "/nix/store/";
int sz = storeDir.size();
string tag = inHeader ? "head" : "line";
cout << "<" << tag << ">";
cout << "<" << tag;
if (priority != 1) cout << " priority='" << priority << "'";
cout << ">";
for (int i = 0; i < line.size(); i++) {
@ -113,6 +135,7 @@ void Decoder::finishLine()
cout << "</" << tag << ">" << endl;
line = "";
inHeader = false;
priority = 1;
}