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