示例#1
0
        private static Ranges <int> FindMatches(Regex rx, string s, ref Ranges <int> TokenRange)
        {
            Ranges <int>    ranges = new Ranges <int>();
            MatchCollection mc     = rx.Matches(s);

            foreach (Match m in mc)
            {
                int sToken = m.Groups[1].Index;
                int match  = m.Groups[2].Index;
                int eToken = m.Groups[3].Index;
                int endStr = m.Groups[3].Index + m.Groups[3].Length;

                TokenRange.add(new Range <int>()
                {
                    Minimum = sToken, Maximum = match - 1
                });

                ranges.add(new Range <int>()
                {
                    Minimum = match, Maximum = eToken - 1
                });

                TokenRange.add(new Range <int>()
                {
                    Minimum = eToken, Maximum = endStr - 1
                });
            }

            return(ranges);
        }
示例#2
0
        private static Ranges <int> FindTabs(Regex rx, string s, ref Ranges <int> TokenRange)
        {
            Ranges <int>    ranges = new Ranges <int>();
            MatchCollection mc     = rx.Matches(s);

            foreach (Match m in mc)
            {
                ranges.add(new Range <int>()
                {
                    Minimum = m.Index,
                    Maximum = m.Index
                });

                TokenRange.add(new Range <int>()
                {
                    Minimum = m.Index,
                    Maximum = m.Index + m.Length - 1
                });
            }
            return(ranges);
        }
        public void FindMatches(string md, ref Ranges <int> Tokens)
        {
            if (pattern == Pattern.DblAsterisk || pattern == Pattern.Asterisk || pattern == Pattern.Grave || pattern == Pattern.Underscore || pattern == Pattern.BulletList)
            {
                MatchCollection mc  = regex.Matches(md);
                int             num = 0;

                foreach (Match m in mc)
                {
                    num++;

                    int sToken = m.Groups[1].Index;
                    int match  = m.Groups[2].Index;
                    int eToken = m.Groups[3].Index;
                    int endStr = m.Groups[3].Index + m.Groups[3].Length;
                    //int bToken = m.Groups[4].Index;
                    //int endStr1 = m.Groups[4].Index + m.Groups[4].Length;


                    Tokens.add(new Range <int>()
                    {
                        Minimum = sToken,
                        Maximum = match - 1
                    });

                    matches.add(new Range <int>()
                    {
                        Minimum = match,
                        Maximum = eToken - 1
                    });

                    Tokens.add(new Range <int>()
                    {
                        Minimum = m.Index,
                        Maximum = m.Index
                    });
                    Tokens.add(new Range <int>()
                    {
                        Minimum = m.Index,
                        Maximum = m.Index + m.Index - 1
                    });
                }
            }
            else if (pattern == Pattern.Tab)
            {
                MatchCollection mc = regex.Matches(md);

                foreach (Match m in mc)
                {
                    matches.add(new Range <int>()
                    {
                        Minimum = m.Index,
                        Maximum = m.Index
                    });

                    Tokens.add(new Range <int>()
                    {
                        Minimum = m.Index,
                        Maximum = m.Index + m.Length - 1
                    });
                }
            }
            else if (pattern == Pattern.Hyperlink_Text || pattern == Pattern.Hyperlink)
            {
            }
            else
            {
                throw new System.InvalidOperationException("FindMatches not implemented for this pattern");
            }
        }