コード例 #1
0
ファイル: FileMapComponent.cs プロジェクト: vaginessa/Code
        public List <FileComponent> Search(string keyword, FileFilter filter)
        {
            List <FileComponent> list     = new List <FileComponent>();
            List <string>        keywords = new List <string>();

            // Keywords
            if (keyword.StartsWith("\""))
            {
                int offset = keyword.EndsWith("\"") ? 2 : 1;
                keywords.Add(keyword.Substring(1, keyword.Length - offset));
            }
            else
            {
                keywords.AddRange(keyword.Split(' '));
            }

            // Filters
            FileFormatHandler handler = FileFormat.GetHandler(filter);

            // Files
            IEnumerator <string> it = keywords.GetEnumerator();

            while (it.MoveNext())
            {
                keyword = (string)it.Current;

                lock (Map)
                {
                    foreach (string id in Map.Keys)
                    {
                        FileComponent file = Get(id);

                        if (handler(file.Extension))
                        {
                            string filename = file.Name.ToLower();
                            if (filename.Contains(keyword))
                            {
                                list.Add(file);
                            }
                        }
                    }
                }
            }

            return(list);
        }
コード例 #2
0
ファイル: ClientData.cs プロジェクト: vaginessa/Code
        public Dictionary <string, FileData> SearchFiles(string keyword, FileFilter filter)
        {
            Dictionary <string, FileData> files = new Dictionary <string, FileData>();
            List <string> items = new List <string>();

            // Keywords
            if (keyword.StartsWith("\""))
            {
                int offset = keyword.EndsWith("\"") ? 2 : 1;
                items.Add(keyword.Substring(1, keyword.Length - offset));
            }
            else
            {
                items.AddRange(keyword.Split(' '));
            }

            // Filters
            FileFormatHandler handler = FileFormat.GetHandler(filter);

            // Files
            foreach (string item in items)
            {
                lock (FileMap)
                {
                    foreach (string key in FileMap.Keys)
                    {
                        FileData data = FileMap[key];

                        if (handler(data.Extension))
                        {
                            string filename = data.Name.ToLower();
                            if (filename.Contains(item) && !files.ContainsKey(key))
                            {
                                files.Add(key, data);
                            }
                        }
                    }
                }
            }

            return(files);
        }