in src/PSRule.Rules.Azure/Data/Template/TokenStream.cs [114:155]
internal string AsString()
{
var builder = new StringBuilder();
builder.Append(IndexOpen);
var group = 0;
ExpressionToken last = null;
for (var i = 0; i < _Token.Count; i++)
{
var current = _Token[i];
if (last != null && !(current.Type == ExpressionTokenType.Property || IsStartOrEndToken(current)) && !(last.Type == ExpressionTokenType.GroupStart || last.Type == ExpressionTokenType.IndexStart))
builder.Append(Comma);
if (current.Type == ExpressionTokenType.Property)
builder.Append(Dot);
else if (current.Type == ExpressionTokenType.GroupStart)
{
builder.Append(FunctionOpen);
group++;
}
else if (current.Type == ExpressionTokenType.GroupEnd)
{
builder.Append(FunctionClose);
group--;
}
else if (current.Type == ExpressionTokenType.IndexStart)
builder.Append(IndexOpen);
else if (current.Type == ExpressionTokenType.IndexEnd)
builder.Append(IndexClose);
else if (current.Type == ExpressionTokenType.String)
builder.Append(BackSlash);
else if (current.Type == ExpressionTokenType.Numeric)
builder.Append(current.Value);
builder.Append(current.Content);
if (current.Type == ExpressionTokenType.String)
builder.Append(BackSlash);
last = current;
}
builder.Append(IndexClose);
return builder.ToString();
}