AlienLanguage.Language.Match C# (CSharp) Method

Match() public method

public Match ( string match ) : IEnumerable
match string
return IEnumerable
        public IEnumerable<string> Match(string match)
        {
            var list = new List<string>();

            if (!IsPattern(match))
            {
                if (this.words.Contains(match))
                    list.Add(match);

                return list;
            }

            var parts = SplitPattern(match);

            IList<string> result = this.words;
            int pos = 0;

            foreach (var part in parts)
            {
                if (part[0] == '(')
                {
                    pos++;
                    continue;
                }

                int len = part.Length;
                result = result.Where(w => w.Substring(pos, len) == part).ToList();
                pos += len;
            }

            pos = 0;

            foreach (var part in parts)
            {
                if (part[0] != '(')
                {
                    int len = part.Length;
                    pos += len;
                    continue;
                }

                result = result.Where(w => part.Contains(w[pos])).ToList();
                pos++;
            }

            return result;
        }

Usage Example

Example #1
0
        public void AddAndMatchWord()
        {
            Language language = new Language();

            language.AddWord("abc");

            var result = language.Match("abc");

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual("abc", result.First());
        }
All Usage Examples Of AlienLanguage.Language::Match