public ModuleResponse GetSyns(ModuleRequest request) { try { var q = request.EncodeData["sync"].ToString(); if (!string.IsNullOrEmpty(q)) { var source = new WebSynonymsSource(); var syncs = source.GetSynonyms(q); if (!syncs.Any()) { return new ModuleResponse(request, "Синонимы к слову '" + q + "' не найдены"); } var builder = new StringBuilder(); builder.Append("Синонимы к слову '" + q + "'. Всего: " + syncs.Count() + Environment.NewLine); foreach (var sync in syncs) { builder.Append(sync + Environment.NewLine); } return new ModuleResponse(request, builder.ToString()); } else { return new ModuleResponse(request, "Не могу вывести синонимы - отсутствует исходное слово"); } } catch (Exception e) { return new ModuleResponse(request, "Ошибка: " + e.Message); } }
public override FunctionExecuteResult Execute(FunctionExecuteArgs args) { var res = new List<string>(); if (args.Args[0].StartsWith("@")) { var source = new WebSynonymsSource(); Console.WriteLine("Соединяюсь с интернетом, на выполнение запроса уйдет немного больше времени..."); var ss = source.GetSynonyms(args.Args[0].Substring(1)); res.AddRange(ss); res.Add(args.Args[0].Substring(1)); } else { res = new List<string>(args.Args); } var result = new List<string>(); foreach (var arg in res) { try { for (var i = 0; i < arg.Length; i++) { if (i == arg.Length - 1 && char.ToLower(args.Input[i]) == char.ToLower(arg[i])) { if (args.Attributes.ContainsKey("id")) { args.Provider.ComponentsData.Add(args.Attributes["id"], arg); } result.Add(arg); } if (char.ToLower(args.Input[i]) != char.ToLower(arg[i])) break; } } catch { } } if (result.Count == 0) { return new FunctionExecuteResult(false, 0); } if (result.Count == 1) { return new FunctionExecuteResult(true, result.First().Length); } result.Sort((s1, s2) => { if (s1.Length > s2.Length) return 1; if (s1.Length == s2.Length) return 0; return -1; }); return new FunctionExecuteResult(true, result.Last().Length); }