Esempio n. 1
0
 public XamlParserResults(ITypeId expectedRootType, DocumentNode rootNode, IList <XamlParseError> errors, INodeSourceContext xmlDocumentReference, IReadableSelectableTextBuffer textBuffer)
 {
     this.expectedRootType     = expectedRootType;
     this.rootNode             = rootNode;
     this.errors               = errors;
     this.xmlDocumentReference = (XmlDocumentReference)xmlDocumentReference;
     this.textBuffer           = textBuffer;
 }
Esempio n. 2
0
        public static void UpdateNodeSourceContext(IReadableSelectableTextBuffer textBuffer, DocumentNode node, int startTagLength, int elementLength)
        {
            DocumentNode node1 = (DocumentNode)node.Parent;

            if (node1 != null && typeof(DictionaryEntry).IsAssignableFrom(node1.TargetType) && node1.SourceContext is XmlElementReference)
            {
                XamlSerializerUtilities.UpdateNodeSourceContextWorker(textBuffer, node1, startTagLength, elementLength);
            }
            XamlSerializerUtilities.UpdateNodeSourceContextWorker(textBuffer, node, startTagLength, elementLength);
        }
Esempio n. 3
0
 private static void UpdateSourceContextRangeFromInitialRangeWorker(IReadableSelectableTextBuffer textBuffer, DocumentNode node, int offset)
 {
     node.ClearOldSourceContainerContext();
     XamlSerializerUtilities.UpdateSourceContextRangeFromInitialRange(textBuffer, node.SourceContext, offset);
     XamlSerializerUtilities.UpdateSourceContextRangeFromInitialRange(textBuffer, node.ContainerSourceContext, offset);
     foreach (DocumentNode node1 in node.ChildNodes)
     {
         XamlSerializerUtilities.UpdateSourceContextRangeFromInitialRangeWorker(textBuffer, node1, offset);
     }
 }
Esempio n. 4
0
 protected XamlSourceContext(XmlContainerReference parent, IReadableSelectableTextBuffer textBuffer, SourceContext sourceContext, bool beginTracking)
 {
     this.parent = parent;
     if (!beginTracking)
     {
         return;
     }
     this.textRange = XamlSourceContext.ToTextRange(textBuffer, sourceContext);
     this.ordering  = sourceContext.StartCol;
 }
 public RemovedXmlAttributeReference(XmlAttributeReference originalReference, bool isClone)
     : base((XmlElementReference)originalReference.Parent)
 {
     originalReference.CloneCopy((XamlSourceContext)this, false);
     this.textBuffer = originalReference.TextBuffer.Freeze();
     if (originalReference.TextRange != null)
     {
         this.TextRange = this.textBuffer.FreezeRange(originalReference.TextRange);
     }
     this.isCloned = isClone;
 }
Esempio n. 6
0
        internal static ITextRange ToTextRange(IReadableSelectableTextBuffer textBuffer, SourceContext sourceContext)
        {
            int offset = sourceContext.StartCol;
            int num    = sourceContext.EndCol;
            int length = textBuffer.Length;

            if (num > length)
            {
                num = length;
            }
            return(textBuffer.CreateRange(offset, num - offset));
        }
        public string GetIndent(string childIndent)
        {
            if (this.documentNode == null)
            {
                return(string.Empty);
            }
            DocumentCompositeNode parent = this.documentNode.Parent;

            if (parent == null)
            {
                return(string.Empty);
            }
            XamlSourceContext xamlSourceContext = (XamlSourceContext)null;

            if (this.documentNode.IsChild)
            {
                for (int index = this.documentNode.SiteChildIndex - 1; index >= 0; --index)
                {
                    xamlSourceContext = parent.Children[index].SourceContext as XamlSourceContext;
                    if (xamlSourceContext != null && xamlSourceContext.TextRange != null)
                    {
                        break;
                    }
                }
            }
            bool flag = false;

            while (parent != null && (xamlSourceContext == null || xamlSourceContext.TextRange == null))
            {
                xamlSourceContext = parent.SourceContext as XamlSourceContext ?? parent.ContainerSourceContext as XamlSourceContext;
                parent            = parent.Parent;
                flag = true;
            }
            if (xamlSourceContext == null)
            {
                return(string.Empty);
            }
            IReadableSelectableTextBuffer hostBuffer = TextBufferHelper.GetHostBuffer(xamlSourceContext.TextBuffer);
            ITextRange textRange = TextBufferHelper.ExpandSpanLeftToFillWhitespace((IReadableTextBuffer)hostBuffer, (ITextRange) new TextRange(xamlSourceContext.TextRange.Offset, xamlSourceContext.TextRange.Offset));
            string     str       = hostBuffer.GetText(textRange.Offset, textRange.Length);
            int        num       = str.LastIndexOf('\n');

            if (num != -1)
            {
                str = str.Substring(num + 1);
            }
            if (flag)
            {
                str += childIndent;
            }
            return(str);
        }
Esempio n. 8
0
        public static int GetStartOfXmlCloseTag(IReadableSelectableTextBuffer textBuffer, int elementEnd)
        {
            if (elementEnd <= 0)
            {
                return(0);
            }
            int offset = elementEnd - 1;

            while (offset >= 0 && (int)textBuffer.GetText(offset, 1)[0] != 60)
            {
                --offset;
            }
            return(offset);
        }
Esempio n. 9
0
        private static void UpdateNodeSourceContextWorker(IReadableSelectableTextBuffer textBuffer, DocumentNode node, int startTagLength, int elementLength)
        {
            XmlElementReference elementReference1 = (XmlElementReference)node.SourceContext;
            XmlElementReference elementReference2 = (XmlElementReference)elementReference1.Clone(false);

            if (startTagLength != elementLength)
            {
                elementReference2.StartTagRange = textBuffer.CreateRange(elementReference1.TextRange.Offset, startTagLength);
            }
            elementReference2.SetTextRange(textBuffer, elementReference1.TextRange.Offset, elementLength);
            if (node.DocumentRoot != null)
            {
                node.DocumentRoot.SetSourceContext(node, (INodeSourceContext)elementReference2);
            }
            else
            {
                node.SourceContext = (INodeSourceContext)elementReference2;
            }
        }
 public RemovedXmlElementReference(XmlElementReference originalReference, bool isClone)
     : base(originalReference.Parent, new SourceContext(), new SourceContext(), false)
 {
     originalReference.CloneCopy((XamlSourceContext)this, false);
     this.textBuffer = originalReference.TextBuffer.Freeze();
     if (this.Comment != null && this.Comment.SourceContext != null)
     {
         this.Comment.SourceContext.FreezeText(isClone);
     }
     if (originalReference.TextRange != null)
     {
         this.TextRange = this.textBuffer.FreezeRange(originalReference.TextRange);
     }
     if (originalReference.StartTagRange != null)
     {
         this.StartTagRange = this.textBuffer.FreezeRange(originalReference.StartTagRange);
     }
     this.isCloned = isClone;
 }
Esempio n. 11
0
        public static int GetEndOfXmlElementName(IReadableSelectableTextBuffer textBuffer, TextRange startTagSpan)
        {
            int offset = startTagSpan.Offset + 1;

            while (offset < startTagSpan.Offset + startTagSpan.Length)
            {
                int    length = Math.Min(32, startTagSpan.Offset + startTagSpan.Length - offset);
                string text   = textBuffer.GetText(offset, length);
                for (int index = 0; index < text.Length; ++index)
                {
                    if (Scanner.IsXmlWhitespace(text[index]) || (int)text[index] == 47 || (int)text[index] == 62)
                    {
                        return(offset + index);
                    }
                }
                offset += length;
            }
            return(offset);
        }
Esempio n. 12
0
        private static void UpdateSourceContextRangeFromInitialRange(IReadableSelectableTextBuffer textBuffer, INodeSourceContext context, int offset)
        {
            XamlSourceContext xamlSourceContext = context as XamlSourceContext;

            if (xamlSourceContext == null)
            {
                return;
            }
            if (!TextRange.IsNull(xamlSourceContext.InitialTextSpan))
            {
                ITextRange initialTextSpan = xamlSourceContext.InitialTextSpan;
                ITextRange textRange1      = (ITextRange) new TextRange(initialTextSpan.Offset + offset, initialTextSpan.Offset + initialTextSpan.Length + offset);
                xamlSourceContext.InitialTextSpan = textRange1;
                xamlSourceContext.SetTextRange(textBuffer, textRange1.Offset, textRange1.Length);
                XmlElementReference elementReference = xamlSourceContext as XmlElementReference;
                if (elementReference == null)
                {
                    return;
                }
                foreach (XmlElementReference.Attribute attribute in elementReference.AttributesToPreserve)
                {
                    XamlSerializerUtilities.UpdateSourceContextRangeFromInitialRange(textBuffer, (INodeSourceContext)attribute.SourceContext, offset);
                }
                if (TextRange.IsNull(elementReference.InitialStartTagSpan))
                {
                    return;
                }
                ITextRange initialStartTagSpan = elementReference.InitialStartTagSpan;
                ITextRange textRange2          = (ITextRange) new TextRange(initialStartTagSpan.Offset + offset, initialStartTagSpan.Offset + initialStartTagSpan.Length + offset);
                elementReference.InitialStartTagSpan = textRange2;
                elementReference.StartTagRange       = textBuffer.CreateRange(textRange2.Offset, textRange2.Length);
            }
            else
            {
                xamlSourceContext.ClearTextRange();
                XmlElementReference elementReference = xamlSourceContext as XmlElementReference;
                if (elementReference == null)
                {
                    return;
                }
                elementReference.StartTagRange = (ITextRange)null;
            }
        }
Esempio n. 13
0
        public static ITextRange GetElementNameSelectionSpan(IReadableSelectableTextBuffer textBuffer, ITextRange elementSpan)
        {
            int start  = elementSpan.Offset + 1;
            int num    = elementSpan.Length - 1;
            int offset = start;

            while (offset < textBuffer.Length)
            {
                int    length = Math.Min(32, textBuffer.Length - offset);
                string text   = textBuffer.GetText(offset, length);
                for (int index = 0; index < text.Length; ++index)
                {
                    if (char.IsWhiteSpace(text[index]) || (int)text[index] == 47 || (int)text[index] == 62)
                    {
                        num    = index + offset - start;
                        offset = textBuffer.Length;
                        break;
                    }
                }
                offset += length;
            }
            return((ITextRange) new TextRange(start, start + num));
        }
Esempio n. 14
0
 public static IReadableSelectableTextBuffer GetHostBuffer(IReadableSelectableTextBuffer textBuffer)
 {
     return(textBuffer);
 }
Esempio n. 15
0
 public static XamlParserResults Parse(IDocumentContext context, ITypeId expectedRootType, IReadableSelectableTextBuffer textBuffer)
 {
     return(new XamlParser(context, textBuffer, expectedRootType).Parse());
 }
Esempio n. 16
0
 internal XmlDocumentReference(IReadableSelectableTextBuffer textBuffer, SourceContext sourceContext, string encoding, bool beginTracking)
     : base((XmlContainerReference)null, textBuffer, sourceContext, beginTracking)
 {
     this.textBuffer = textBuffer;
     this.encoding   = encoding;
 }
Esempio n. 17
0
 internal XmlDocumentReference(IReadableSelectableTextBuffer textBuffer, XmlDocument xmlDocument, bool beginTracking)
     : this(textBuffer, xmlDocument.SourceContext, xmlDocument.Encoding, beginTracking)
 {
 }
Esempio n. 18
0
 protected XmlContainerReference(XmlContainerReference parent, IReadableSelectableTextBuffer textBuffer, SourceContext sourceContext, bool beginTracking)
     : base(parent, textBuffer, sourceContext, beginTracking)
 {
 }
Esempio n. 19
0
 public static void UpdateSourceContextRangeFromInitialRange(IReadableSelectableTextBuffer textBuffer, DocumentNode node, int offset)
 {
     XamlSerializerUtilities.UpdateSourceContextRangeFromInitialRangeWorker(textBuffer, node, offset);
     XamlSerializerUtilities.RefreshSiblingOrdering(node);
 }
Esempio n. 20
0
 public static XamlParseError XmlError(ErrorNode errorNode, IReadableSelectableTextBuffer textBuffer, int offset)
 {
     return(XamlParseErrors.NewParseError(XamlErrorSeverity.Error, XamlErrorCode.XmlError, textBuffer.GetLocation(errorNode.SourceContext.StartCol + offset), errorNode.ErrorCode, errorNode.ErrorParameters));
 }
Esempio n. 21
0
 public void SetTextRange(IReadableSelectableTextBuffer textBuffer, int offset, int length)
 {
     this.textRange = textBuffer.CreateRange(offset, length);
     this.ordering  = offset;
 }