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 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]; }
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; }
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]; }
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]; }