コード例 #1
0
        private void SearchMembers(string source)
        {
            var namespaces = new List <NetSnapshotMember>();
            var types      = new List <NetSnapshotMember>();
            var methods    = new List <NetSnapshotMember>();
            var fields     = new List <NetSnapshotMember>();
            var properties = new List <NetSnapshotMember>();
            var events     = new List <NetSnapshotMember>();

            foreach (Match match in _namespaceRegex.Matches(source))
            {
                namespaces.Add(new NetSnapshotMember(match.Value.Split(' ')[1], new string[] { "namespace" }, string.Empty, match.Index, match.Index + match.Length));
            }

            foreach (Match match in _membersRegex.Matches(source))
            {
                string modifiers          = match.Groups["modifiers"].Value.Trim();
                string explicitMemberType = match.Groups["explicitMemberType"].Value.Trim();
                string returnType         = match.Groups["returnType"].Value.Trim();
                string baseType           = match.Groups["baseType"].Value.Trim();
                string name       = match.Groups["name"].Value.Trim();
                bool   isMethod   = !string.IsNullOrEmpty(match.Groups["methodParanthese"].Value);
                bool   isProperty = !string.IsNullOrEmpty(match.Groups["propertyBrace"].Value);

                var member = new NetSnapshotMember(name, GetModifiers(modifiers), returnType, match.Index, match.Index + match.Length);

                if (explicitMemberType == "event")
                {
                    events.Add(member);
                }
                else if (!string.IsNullOrEmpty(explicitMemberType))
                {
                    member.ValueType = baseType;
                    types.Add(member);
                }
                else if (isMethod)
                {
                    methods.Add(member);
                }
                else if (isProperty)
                {
                    properties.Add(member);
                }
                else
                {
                    fields.Add(member);
                }
            }

            this.Namespaces = namespaces.ToArray();
            this.Types      = types.ToArray();
            this.Fields     = fields.ToArray();
            this.Methods    = methods.ToArray();
            this.Properties = properties.ToArray();
            this.Events     = events.ToArray();
        }
コード例 #2
0
        private static NetSnapshotMember FindEnclosingMember(NetSnapshotMember[] members, int index)
        {
            for (int i = 0; i < members.Length; i++)
            {
                if (members[i].Start > index)
                {
                    if (i == 0)
                        return null;
                    return members[i - 1];
                }
            }

            return members[members.Length - 1];
        }
コード例 #3
0
        private AutocompleteItem CreateItem(NetSnapshotMember member, int imageIndex, bool isMember, bool isMethod)
        {
            AutocompleteItem item;
            if (isMember)
            {
                if (isMethod)
                    item = new CodeEditorMethodAutoCompleteItem(member.Name, _memberSeparators);
                else
                    item = new CodeEditorMemberAutoCompleteItem(member.Name, _memberSeparators);

            }
            else
                item = new CodeEditorAutoCompleteItem(member.Name);

            item.ImageIndex = imageIndex;
            item.ToolTipTitle = member.ToString();
            item.Tag = member;
            return item;
        }
コード例 #4
0
        private void SearchMembers(string source)
        {
            var namespaces = new List <NetSnapshotMember>();
            var types      = new List <NetSnapshotMember>();
            var methods    = new List <NetSnapshotMember>();
            var fields     = new List <NetSnapshotMember>();
            var properties = new List <NetSnapshotMember>();

            foreach (Match match in _namespaceRegex.Matches(source))
            {
                namespaces.Add(new NetSnapshotMember(match.Value.Split(' ')[1], new string[] { "Namespace" }, string.Empty, match.Index, match.Index + match.Length));
            }

            foreach (Match match in _membersRegex.Matches(source))
            {
                string modifiers  = match.Groups["modifiers"].Value.Trim();
                string memberType = match.Groups["memberType"].Value.Trim();
                string returnType = match.Groups["returnType"].Value.Trim();
                string name       = match.Groups["name"].Value.Trim();

                if (string.Compare(memberType, "function", true) == 0)
                {
                    string line        = match.Value;
                    Regex  secondMatch = new Regex(@"As\s+(?<type>[^\s]+)", RegexOptions.IgnoreCase);
                    var    matches     = secondMatch.Matches(line);
                    if (matches.Count > 0)
                    {
                        returnType = matches[matches.Count - 1].Groups["type"].Value.Trim();
                    }
                }
                else if (string.Compare(memberType, "sub", true) == 0)
                {
                    returnType = typeof(void).FullName;
                }

                if (string.IsNullOrEmpty(returnType))
                {
                    returnType = typeof(object).FullName;
                }

                var member = new NetSnapshotMember(name, GetModifiers(modifiers), returnType, match.Index, match.Index + match.Length);

                if (string.Compare(memberType, "class", true) == 0 ||
                    string.Compare(memberType, "interface", true) == 0 ||
                    string.Compare(memberType, "structure", true) == 0 ||
                    string.Compare(memberType, "enum", true) == 0)
                {
                    var baseTypeMatch = _baseTypeRegex.Match(source, match.Index);
                    if (baseTypeMatch.Success)
                    {
                        member.ValueType = baseTypeMatch.Groups["baseType"].Value;
                    }
                    else
                    {
                        member.ValueType = string.Empty;
                    }

                    types.Add(member);
                }
                else if (string.Compare(memberType, "function", true) == 0 || string.Compare(memberType, "sub", true) == 0)
                {
                    methods.Add(member);
                }
                else if (string.Compare(memberType, "property", true) == 0)
                {
                    properties.Add(member);
                }
                else
                {
                    fields.Add(member);
                }
            }

            this.Namespaces = namespaces.ToArray();
            this.Types      = types.ToArray();
            this.Fields     = fields.ToArray();
            this.Methods    = methods.ToArray();
            this.Properties = properties.ToArray();
            this.Events     = new NetSnapshotMember[0];
        }
コード例 #5
0
        private void SearchMembers(string source)
        {
            var namespaces = new List<NetSnapshotMember>();
            var types = new List<NetSnapshotMember>();
            var methods = new List<NetSnapshotMember>();
            var fields = new List<NetSnapshotMember>();
            var properties = new List<NetSnapshotMember>();
            var events = new List<NetSnapshotMember>();

            foreach (Match match in _namespaceRegex.Matches(source))
            {
                namespaces.Add(new NetSnapshotMember(match.Value.Split(' ')[1], new string[] { "namespace" }, string.Empty, match.Index, match.Index + match.Length));
            }

            foreach (Match match in _membersRegex.Matches(source))
            {
                string modifiers = match.Groups["modifiers"].Value.Trim();
                string explicitMemberType = match.Groups["explicitMemberType"].Value.Trim();
                string returnType = match.Groups["returnType"].Value.Trim();
                string baseType = match.Groups["baseType"].Value.Trim();
                string name = match.Groups["name"].Value.Trim();
                bool isMethod = !string.IsNullOrEmpty(match.Groups["methodParanthese"].Value);
                bool isProperty = !string.IsNullOrEmpty(match.Groups["propertyBrace"].Value);

                var member = new NetSnapshotMember(name, GetModifiers(modifiers), returnType, match.Index, match.Index + match.Length);

                if (explicitMemberType == "event")
                {
                    events.Add(member);
                }
                else if (!string.IsNullOrEmpty(explicitMemberType))
                {
                    member.ValueType = baseType;
                    types.Add(member);
                }
                else if (isMethod)
                {
                    methods.Add(member);
                }
                else if (isProperty)
                {
                    properties.Add(member);
                }
                else
                {
                    fields.Add(member);
                }
            }

            this.Namespaces = namespaces.ToArray();
            this.Types = types.ToArray();
            this.Fields = fields.ToArray();
            this.Methods = methods.ToArray();
            this.Properties = properties.ToArray();
            this.Events = events.ToArray();
        }
        private void SearchMembers(string source)
        {
            var namespaces = new List<NetSnapshotMember>();
            var types = new List<NetSnapshotMember>();
            var methods = new List<NetSnapshotMember>();
            var fields = new List<NetSnapshotMember>();
            var properties = new List<NetSnapshotMember>();

            foreach (Match match in _namespaceRegex.Matches(source))
            {
                namespaces.Add(new NetSnapshotMember(match.Value.Split(' ')[1], new string[] { "Namespace" }, string.Empty, match.Index, match.Index + match.Length));
            }

            foreach (Match match in _membersRegex.Matches(source))
            {
                string modifiers = match.Groups["modifiers"].Value.Trim();
                string memberType = match.Groups["memberType"].Value.Trim();
                string returnType = match.Groups["returnType"].Value.Trim();
                string name = match.Groups["name"].Value.Trim();

                if (string.Compare(memberType, "function", true) == 0)
                {
                    string line = match.Value;
                    Regex secondMatch = new Regex(@"As\s+(?<type>[^\s]+)", RegexOptions.IgnoreCase);
                    var matches = secondMatch.Matches(line);
                    if (matches.Count > 0)
                    {
                        returnType = matches[matches.Count - 1].Groups["type"].Value.Trim();
                    }
                }
                else if (string.Compare(memberType, "sub", true) == 0)
                {
                    returnType = typeof(void).FullName;
                }

                if (string.IsNullOrEmpty(returnType))
                {
                    returnType = typeof(object).FullName;
                }

                var member = new NetSnapshotMember(name, GetModifiers(modifiers), returnType, match.Index, match.Index + match.Length);
                
                if (string.Compare(memberType, "class", true) == 0 ||
                    string.Compare(memberType, "interface", true) == 0 ||
                    string.Compare(memberType, "structure", true) == 0 ||
                    string.Compare(memberType, "enum", true) == 0)
                {
                    var baseTypeMatch = _baseTypeRegex.Match(source, match.Index);
                    if (baseTypeMatch.Success)
                        member.ValueType = baseTypeMatch.Groups["baseType"].Value;
                    else
                        member.ValueType = string.Empty;

                    types.Add(member);
                }
                else if (string.Compare(memberType, "function", true) == 0 || string.Compare(memberType, "sub", true) == 0)
                {
                    methods.Add(member);
                }
                else if (string.Compare(memberType, "property", true) == 0)
                {
                    properties.Add(member);
                }
                else
                {
                    fields.Add(member);
                }
            }

            this.Namespaces = namespaces.ToArray();
            this.Types = types.ToArray();
            this.Fields = fields.ToArray();
            this.Methods = methods.ToArray();
            this.Properties = properties.ToArray();
            this.Events = new NetSnapshotMember[0];
        }