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)); }
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(); }
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)); }
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); } } }