예제 #1
0
        public void ParseNodeShouldReturnElementNodeGivenAnUnclosedElementAtTheEndOfTheContent()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<use content='main'", position: 10);

            Assert.That(node, Is.InstanceOfType(typeof(ElementNode)));
            Assert.That(((ElementNode)node).Name, Is.EqualTo("use"));
            Assert.That(((ElementNode)node).Attributes.Count, Is.EqualTo(1));
            Assert.That(((ElementNode)node).Attributes[0].Name, Is.EqualTo("content"));
            Assert.That(((ElementNode)node).Attributes[0].Value, Is.EqualTo("main"));
        }
예제 #2
0
        public void IsSparkNodeShouldReturnASpecialNodeForUnclosedElement()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<use >", position: 1);

            Node sparkNode;
            var isSparkNode = sparkSyntax.IsSparkElementNode(node, out sparkNode);

            Assert.That(isSparkNode);
            Assert.IsNotNull(sparkNode);
            Assert.That(sparkNode, Is.InstanceOfType(typeof(SpecialNode)));
        }
예제 #3
0
        public void IsSparkNodeShouldReturnAnElementNodeIfNotSparkSyntax()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<div id='products'/>", position: 1);

            Node elementNode;
            var isSparkNode = sparkSyntax.IsSparkElementNode(node, out elementNode);

            Assert.That(!isSparkNode);
            Assert.IsNotNull(elementNode);
            Assert.That(elementNode, Is.InstanceOfType(typeof(ElementNode)));
        }
예제 #4
0
        public void AugmentCompletionSession(ICompletionSession session, IList<CompletionSet> completionSets)
        {
            _triggerPoint = session.GetTriggerPoint(_textBuffer).GetPoint(_textBuffer.CurrentSnapshot);

            if (!session.Properties.TryGetProperty(typeof(ITrackingSpan), out _trackingSpan))
                _trackingSpan = _triggerPoint.Snapshot.CreateTrackingSpan(new Span(_triggerPoint, 0), SpanTrackingMode.EdgeInclusive);

            var syntax = new SparkSyntax();
            Node currentNode = syntax.ParseNode(_textBuffer.CurrentSnapshot.GetText(), _triggerPoint);
            CompletionSet sparkCompletions = GetCompletionSetFor(currentNode);
            if (sparkCompletions == null) return;

            MergeSparkWithAllCompletionsSet(completionSets, sparkCompletions);
            completionSets.Add(sparkCompletions);
        }
예제 #5
0
        public void ParseNodesShouldParseIntoMultipleNodes()
        {
            var sparkSyntax = new SparkSyntax();
            var nodes = sparkSyntax.ParseNodes("<div><use content='main'/></div>");
            var visitor = new SpecialNodeVisitor(new VisitorContext());
            visitor.Accept(nodes);

            Assert.That(visitor.Nodes.Count, Is.EqualTo(3));
            Assert.That(visitor.Nodes[0], Is.InstanceOfType(typeof(ElementNode)));
            Assert.That(visitor.Nodes[1], Is.InstanceOfType(typeof(SpecialNode)));
            Assert.That(visitor.Nodes[2], Is.InstanceOfType(typeof(EndElementNode)));
        }
예제 #6
0
        public void ParseNodeShouldReturnElementNodeWithoutAttributesWhenGivenAnUnclosedAttributeValue()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<use content='main ", position: 10);

            Assert.That(node, Is.InstanceOfType(typeof(ElementNode)));
            Assert.That(((ElementNode)node).Name, Is.EqualTo("use"));
            Assert.That(((ElementNode)node).Attributes.Count, Is.EqualTo(0));
        }
예제 #7
0
        public void ParseNodeShouldReturnElementNodeGivenPositionSix()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<div><use content='main'/></div>", position: 6);

            Assert.That(node, Is.InstanceOfType(typeof(ElementNode)));
            Assert.That(((ElementNode)node).Name, Is.EqualTo("use"));
            Assert.That(((ElementNode)node).Attributes.Count, Is.EqualTo(1));
            Assert.That(((ElementNode)node).Attributes[0].Name, Is.EqualTo("content"));
            Assert.That(((ElementNode)node).Attributes[0].Value, Is.EqualTo("main"));
        }
예제 #8
0
        public void ParseNodeShouldReturnElementNodeGivenPositionOne()
        {
            var sparkSyntax = new SparkSyntax();
            var node = sparkSyntax.ParseNode("<div></div>", position: 1);

            Assert.That(node, Is.InstanceOfType(typeof(ElementNode)));
            Assert.That(((ElementNode)node).Name, Is.EqualTo("div"));
        }
예제 #9
0
 private bool TryEvaluateSparkSyntax(int caretPosition, out Node sparkNode)
 {
     var sparkSyntax = new SparkSyntax();
     var currentNode = sparkSyntax.ParseNode(_textView.TextBuffer.CurrentSnapshot.GetText(), caretPosition);
     sparkNode = null;
     return _projectExplorer.IsCurrentDocumentASparkFile()
         ? sparkSyntax.IsSparkElementNode(currentNode, out sparkNode)
         : false;
 }