public string AutoComplete(string line, List <string> strings, CyclingDirections cyclingDirection, bool ignoreCase) { if (IsPreviousCycle(line)) { if (cyclingDirection == CyclingDirections.Forward) { return(ContinueCycle()); } return(ContinueCycleReverse()); } _autoCompleteList = Interactive.AutoComplete.GetAutoCompletePossibilities(line, strings, ignoreCase); if (_autoCompleteList.Count == 0) { return(line); } return(StartNewCycle()); }
public string AutoComplete(string lineBefore, string lineAfter, CyclingDirections cyclingDirection = CyclingDirections.Forward, bool ignoreCase = true) { if (IsPreviousCycle(lineBefore)) { if (cyclingDirection == CyclingDirections.Forward) { return(ContinueCycle()); } return(ContinueCycleReverse()); } _autoCompleteList = AutoCompleteUtils.AutoComplete.GetVariants(lineBefore, lineAfter, KnownTypes); //var parts = line.Split(_tokenDelimiters).Select(p => p.ToLower()).Where(p => !string.IsNullOrEmpty(p)) // .ToList(); //var tables = KnownTypes?.Select(t => t.CollectionName.ToLower()).ToList(); //if (parts.Count == 0) //{ // _autoCompleteList = AutoCompleteUtils.AutoComplete.GetAutoCompletedLines("", "", "", _commands); //} //else if (parts.Count == 1) //{ // var part1 = parts.First(); // if (_commands.Contains(part1)) // { // if (part1 == "delete" || part1 == "select" || part1 == "count") // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " from ", " where", "", tables); // else if (part1 == "help") // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", "", _commands); // else if (part1 == "desc") // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", "", tables); // else if (part1 == "truncate") // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", "", tables); // else if (part1 == "search") // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", "", tables); // } // else // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines("", "", part1, _commands); // } //} //else if (parts.Count == 2) //{ // var part1 = parts.First(); // var part2 = parts.Last(); // if (_commands.Contains(part1)) // { // if (part1 == "delete" || part1 == "select" || part1 == "count") // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", " where", part2, tables); // } // else if (part1 == "help") // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", part2, _commands); // } // else if (part1 == "desc") // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", part2, tables); // } // else if (part1 == "connect") // { // var configFiles = Directory.EnumerateFiles(Directory.GetCurrentDirectory(), part2 + "*.xml") // .Select(Path.GetFileName).ToList(); // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(part1 + " ", "", part2, configFiles); // } // else // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines("", "", part1, _commands); // } // } // else // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines("", "", part1, _commands); // } //} //else if (parts.Count >= 3) //{ // var part1 = parts[0]; // var part2 = parts[1]; // var part3 = parts[2]; // if (_commands.Contains(part1) && tables.Contains(part2) && part3 == "where") // { // if (part1 == "delete" || part1 == "select" || part1 == "count") // { // var typeDescription = KnownTypes.FirstOrDefault(d => d.CollectionName.ToLower() == part2); // var endsWithComma = line.Trim().Last() == ','; // var toComplete = ""; // if (!endsWithComma && parts.Count > 3) toComplete = parts.Last(); // var beforeLastSeperator = line.Substring(0, line.Length - toComplete.Length); // if (typeDescription != null) // { // var allFields = typeDescription.IndexFields // .Union(typeDescription.UniqueKeyFields).ToList(); // allFields.Add(typeDescription.PrimaryKeyField); // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines(beforeLastSeperator, "", // toComplete, allFields.Select(f => f.Name.ToLower()).ToList()); // } // } // } // else // { // _autoCompleteList = // AutoCompleteUtils.AutoComplete.GetAutoCompletedLines("", "", part1, _commands); // } //} if (_autoCompleteList?.Count == 0) { return(lineBefore + lineAfter); } return(StartNewCycle()); }
public string AutoComplete(string line, List <string> strings, CyclingDirections cyclingDirection) { return(AutoComplete(line, strings, cyclingDirection, true)); }