4 using System.Collections.Generic;
7 namespace FooEditEngine
12 public static class CompleteHelper
15 /// KeywordManager.Operatorsで区切られた単語を補完候補に追加する
17 /// <param name="items"></param>
18 /// <param name="Operators"></param>
19 /// <param name="s"></param>
20 public static void AddCompleteWords(CompleteCollection<ICompleteItem> items, IList<char> Operators, string s)
22 if (items == null || Operators == null)
25 char[] seps = new char[Operators.Count];
26 Operators.CopyTo(seps, 0);
28 string[] words = s.Split(seps, StringSplitOptions.RemoveEmptyEntries);
30 foreach (string word in words)
31 CompleteHelper.AddComleteWord(items, word);
37 /// <param name="items"></param>
38 /// <param name="word"></param>
39 public static void AddComleteWord(CompleteCollection<ICompleteItem> items, string word)
41 CompleteWord newItem = new CompleteWord(word);
42 if (items.Contains(newItem) == false && CompleteHelper.IsVaildWord(word))
47 /// ドキュメントから単語リストを作成する
49 /// <param name="doc"></param>
50 /// <param name="startIndex"></param>
51 /// <param name="sep"></param>
52 /// <returns></returns>
53 public static string GetWord(Document doc, int startIndex,char[] sep)
57 StringBuilder word = new StringBuilder();
58 for (int i = startIndex; i >= 0; i--)
60 if(sep.Contains(doc[i]))
62 return word.ToString();
64 word.Insert(0,doc[i]);
67 return word.ToString();
72 static bool IsVaildWord(string s)
74 if (s.Length == 0 || s == string.Empty)
76 if (!Char.IsLetter(s[0]))
78 for (int i = 1; i < s.Length; i++)
80 if (!Char.IsLetterOrDigit(s[i]))