OSDN Git Service

コンパイルエラーを修正した
[fooeditengine/FooEditEngine.git] / Core / CompleteCollectionHelper.cs
1 using System;
2 using System.Linq;
3 using System.Text;
4 using System.Collections.Generic;
5 using FooEditEngine;
6
7 namespace FooEditEngine
8 {
9     /// <summary>
10     /// 補完候補作成用便利クラス
11     /// </summary>
12     public static class CompleteHelper
13     {
14         /// <summary>
15         /// KeywordManager.Operatorsで区切られた単語を補完候補に追加する
16         /// </summary>
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)
21         {
22             if (items == null || Operators == null)
23                 return;
24
25             char[] seps = new char[Operators.Count];
26             Operators.CopyTo(seps, 0);
27
28             string[] words = s.Split(seps, StringSplitOptions.RemoveEmptyEntries);
29
30             foreach (string word in words)
31                 CompleteHelper.AddComleteWord(items, word);
32         }
33
34         /// <summary>
35         /// 補完候補を追加する
36         /// </summary>
37         /// <param name="items"></param>
38         /// <param name="word"></param>
39         public static void AddComleteWord(CompleteCollection<ICompleteItem> items, string word)
40         {
41             CompleteWord newItem = new CompleteWord(word);
42             if (items.Contains(newItem) == false && CompleteHelper.IsVaildWord(word))
43                 items.Add(newItem);
44         }
45
46         /// <summary>
47         /// ドキュメントから単語リストを作成する
48         /// </summary>
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)
54         {
55             if (doc.Length == 0)
56                 return null;
57             StringBuilder word = new StringBuilder();
58             for (int i = startIndex; i >= 0; i--)
59             {
60                 if(sep.Contains(doc[i]))
61                 {
62                     return word.ToString();
63                 }
64                 word.Insert(0,doc[i]);
65             }
66             if (word.Length > 0)
67                 return word.ToString();
68             else
69                 return null;
70         }
71
72         static bool IsVaildWord(string s)
73         {
74             if (s.Length == 0 || s == string.Empty)
75                 return false;
76             if (!Char.IsLetter(s[0]))
77                 return false;
78             for (int i = 1; i < s.Length; i++)
79             {
80                 if (!Char.IsLetterOrDigit(s[i]))
81                     return false;
82             }
83             return true;
84         }
85     }
86 }