public string Describe(string path)
{
var chunks = path.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
if (chunks.Count() == 0)
return "";
var builder = new StringBuilder();
var available = _parameters;
int level = 0;
foreach (var chunk in chunks) {
if (available == null)
return "";
var command = available.FirstOrDefault(x => x.Name.Equals(chunk));
if (command == null)
return "";
if (builder.Length == 0)
{
builder.AppendLine(command.Description);
builder.AppendLine(command.Name);
}
else
builder.AppendLine("".PadLeft(level * 4, ' ') + command.Name + " : " + command.Description);
available = new List<DefinitionCacheItem>(command.Parameters);
level++;
}
return builder.ToString();
}