Пример #1
0
        void SaveReference(bool hasNamespace, Span namespaceSpan, Span nameSpan, XmlNameReferenceKind refKind, bool findDefsOnly)
        {
            var aliasSpan = hasNamespace ? namespaceSpan : new Span(0, 0);
            XmlNamespaceReference nsRef;

            if (findDefsOnly)
            {
                var alias = GetSubstring(aliasSpan);
                var def   = xmlNamespaces.GetOrCreate(alias);
                nsRef = new XmlNamespaceReference(alias)
                {
                    Definition = def
                };
            }
            else
            {
                nsRef = GetAttributeNamespaceReference(aliasSpan);
            }

            if (hasNamespace)
            {
                var @ref = new XmlNamespaceTextViewerReference(nsRef);
                references.Add(new ReferenceInfo(namespaceSpan, @ref, false));
            }

            var nameRef = new XmlNameTextViewerReference(nsRef, GetSubstring(nameSpan), refKind);

            references.Add(new ReferenceInfo(nameSpan, nameRef, false));
        }
Пример #2
0
        void SaveDefinition(Span aliasSpan)
        {
            var nsRef = GetAttributeNamespaceReference(aliasSpan);
            var @ref  = new XmlNamespaceTextViewerReference(nsRef);

            references.Add(new ReferenceInfo(aliasSpan, @ref, true));
        }
			static object Create(IDocumentViewerToolTipProviderContext context, XmlNamespaceTextViewerReference nsRef) {
				var provider = context.Create();
				provider.Image = DsImages.Namespace;

				var name = nsRef.XmlNamespaceReference.Definition.Name;
				const string prefix = "clr-namespace:";
				if (name.StartsWith(prefix)) {
					name = name.Substring(prefix.Length);
					string assemblyName, @namespace;
					ParseClrNamespace(name, out assemblyName, out @namespace);
					if (assemblyName == null && @namespace == null)
						provider.Output.Write(nsRef.XmlNamespaceReference.Definition.Name);
					else {
						if (!string.IsNullOrEmpty(@namespace))
							provider.Output.WriteNamespace(@namespace);
						if (!string.IsNullOrEmpty(assemblyName)) {
							if (!string.IsNullOrEmpty(@namespace))
								provider.Output.WriteLine();
							provider.Output.Write(BoxedTextColor.Assembly, assemblyName);
						}
					}
				}
				else
					provider.Output.Write(name);

				return provider.Create();
			}
Пример #4
0
        void SaveReference(NameToken name, bool findDefsOnly)
        {
            var aliasSpan = name.HasNamespace ? name.Namespace.Span : new Span(0, 0);
            XmlNamespaceReference nsRef;

            if (findDefsOnly)
            {
                var alias = string.Intern(text.Substring(aliasSpan.Start, aliasSpan.Length));
                var def   = xmlNamespaces.GetOrCreate(alias);
                nsRef = new XmlNamespaceReference(alias)
                {
                    Definition = def
                };
            }
            else
            {
                nsRef = GetAttributeNamespaceReference(aliasSpan);
            }

            if (name.HasNamespace)
            {
                var @ref = new XmlNamespaceTextViewerReference(nsRef);
                references.Add(new ReferenceInfo(name.Namespace.Span, @ref, false));
            }

            var tagRef = new XmlTagTextViewerReference(nsRef, text.Substring(name.Name.Span.Start, name.Name.Span.Length));

            references.Add(new ReferenceInfo(name.Name.Span, tagRef, false));
        }
Пример #5
0
            static object Create(IDocumentViewerToolTipProviderContext context, XmlNamespaceTextViewerReference nsRef)
            {
                var provider = context.Create();

                provider.Image = DsImages.Namespace;

                var          origName = nsRef.XmlNamespaceReference.Definition?.Name ?? string.Empty;
                var          name     = origName;
                const string prefix   = "clr-namespace:";

                if (name.StartsWith(prefix))
                {
                    name = name.Substring(prefix.Length);
                    ParseClrNamespace(name, out var assemblyName, out var @namespace);
                    if (assemblyName is null && @namespace is null)
                    {
                        provider.Output.Write(origName);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(@namespace))
                        {
                            provider.Output.WriteNamespace(@namespace);
                        }
                        if (!string.IsNullOrEmpty(assemblyName))
                        {
                            if (!string.IsNullOrEmpty(@namespace))
                            {
                                provider.Output.WriteLine();
                            }
                            provider.Output.Write(BoxedTextColor.Assembly, assemblyName);
                        }
                    }
                }