in Source/Actions/Microsoft.Deployment.Actions.AzureCustom/PowerApp/ConfigurePowerAppTables.cs [72:154]
private ReadableQueryPart GetReadableQueryPart(string query)
{
ReadableQueryPart readableQueryPart = new ReadableQueryPart();
StringBuilder sbPart = new StringBuilder();
StringBuilder sbRead = new StringBuilder();
bool isOpenQuote = false;
bool isTerminated = false;
for (int i = 0; i < query.Length; i++)
{
switch (query[i])
{
case '"':
if (isOpenQuote)
{
isTerminated = true;
}
isOpenQuote = !isOpenQuote;
break;
case ' ':
if (isOpenQuote)
{
sbPart.Append(query[i]);
}
else
{
isTerminated = true;
}
break;
case '(':
if (isOpenQuote)
{
sbPart.Append(query[i]);
}
break;
case ')':
if (isOpenQuote)
{
sbPart.Append(query[i]);
}
else
{
isTerminated = true;
}
break;
default:
sbPart.Append(query[i]);
break;
}
if (isTerminated || i == query.Length - 1)
{
string read = sbPart.ToString();
if (read.Length > 0)
{
if (read[0] == '-')
{
string detail = $"{TWITTER_OPERATOR_DOES_NOT_CONTAIN} \"{read.Substring(1)}\"";
readableQueryPart.Details.Add(detail);
sbRead.Append(detail);
}
else
{
string detail = $"{TWITTER_OPERATOR_CONTAINS} \"{read}\"";
readableQueryPart.Details.Add(detail);
sbRead.Append(detail);
}
if (i < query.Length - 2)
{
sbRead.Append(TWITTER_OPERATOR_AND);
}
}
sbPart.Clear();
isTerminated = false;
}
}
readableQueryPart.Query = sbRead.ToString();
return readableQueryPart;
}