[KOE-117] Improved layout of reminders query trace logging

This commit is contained in:
Patrick Simpson 2017-05-31 12:06:40 +02:00
parent 8110fab096
commit 86b2144e22
1 changed files with 19 additions and 9 deletions

View File

@ -42,40 +42,50 @@ namespace Acacia
private void Indent() private void Indent()
{ {
_builder.Append(new String(' ', _indent)); _builder.Append(new String(' ', _indent * 4));
} }
public void Encode(SearchQuery.And part) public void Encode(SearchQuery.And part)
{ {
EncodeMulti("AND", part.Operands); EncodeMulti("AND", false, part.Operands);
} }
public void Encode(SearchQuery.Or part) public void Encode(SearchQuery.Or part)
{ {
EncodeMulti("OR", part.Operands); EncodeMulti("OR", false, part.Operands);
} }
public void Encode(SearchQuery.Not part) public void Encode(SearchQuery.Not part)
{ {
EncodeMulti("NOT", new[] { part.Operand }); EncodeMulti("NOT", true, new[] { part.Operand });
} }
private void EncodeMulti(string oper, IEnumerable<SearchQuery> parts) private void EncodeMulti(string oper, bool prefix, IEnumerable<SearchQuery> parts)
{ {
Indent(); Indent();
_builder.Append(oper).Append("\n"); _builder.Append("(\n");
Indent();
_builder.Append("{\n");
++_indent; ++_indent;
bool first = !prefix;
foreach (SearchQuery operand in parts) foreach (SearchQuery operand in parts)
{
if (first)
first = false;
else
{
--_indent;
Indent();
_builder.Append(oper).Append("\n");
++_indent;
}
operand.Encode(this); operand.Encode(this);
}
--_indent; --_indent;
Indent(); Indent();
_builder.Append("}\n"); _builder.Append(")\n");
} }
public void Encode(SearchQuery.PropertyBitMask part) public void Encode(SearchQuery.PropertyBitMask part)