public void Accept(Node node) { if (node is TextNode) Visit((TextNode)node); else if (node is EntityNode) Visit((EntityNode)node); else if (node is ExpressionNode) Visit((ExpressionNode)node); else if (node is ElementNode) Visit((ElementNode)node); else if (node is AttributeNode) Visit((AttributeNode)node); else if (node is EndElementNode) Visit((EndElementNode)node); else if (node is DoctypeNode) Visit((DoctypeNode)node); else if (node is CommentNode) Visit((CommentNode)node); else if (node is SpecialNode) Visit((SpecialNode)node); else if (node is ExtensionNode) Visit((ExtensionNode)node); else if (node is StatementNode) Visit((StatementNode)node); else if (node is ConditionNode) Visit((ConditionNode)node); else if (node is XMLDeclNode) Visit((XMLDeclNode) node); else if (node is ProcessingInstructionNode) Visit((ProcessingInstructionNode)node); else if (node is IndentationNode) Visit((IndentationNode)node); else throw new ArgumentException(string.Format("Unknown node type {0}", node.GetType()), "node"); }
public bool IsSparkElementNode(Node inputNode, out Node sparkNode) { var visitor = new SpecialNodeVisitor(new VisitorContext()); visitor.Accept(inputNode); sparkNode = visitor.Nodes.Count > 0 ? visitor.Nodes[0] : null; return sparkNode != null && sparkNode is SpecialNode; }
public void CallVisitorToProcessNodes() { var nodes = new Node[] { new ElementNode("hello", new AttributeNode[0], true) }; _visitor.Accept(nodes); Assert.That(_visitor.Nodes.Count, Is.EqualTo(1)); Assert.That(_visitor.Nodes[0], Is.SameAs(nodes[0])); }
protected static void AddAttribute(ElementNode elementNode, string attributeName, Node childNode) { elementNode.RemoveAttributesByName(attributeName); elementNode.Attributes.Add(new AttributeNode(attributeName, new List<Node> { childNode })); }
public static INode CreateWrapper(Node node) { if (node is ElementNode) { return new SparkElementWrapper((ElementNode)node); } if (node is AttributeNode) { return new SparkAttributeWrapper((AttributeNode)node); } return new UnrecognisedSparkNodeWrapper(node); }
public static bool IsSpecialNode(Node currentNode, out Node sparkNode) { IList<Node> resultNodes = null; if (currentNode != null) foreach (var visitor in BuildNodeVisitors(new VisitorContext())) { visitor.Accept(currentNode); resultNodes = visitor.Nodes; } sparkNode = resultNodes != null && resultNodes.Count > 0 ? resultNodes[0] : null; return sparkNode != null && sparkNode is SpecialNode; }
private Position LocateEnd(Node expressionNode) { Paint<Node> paint; Node scan = expressionNode; while (scan != null) { if (_nodePaint.TryGetValue(scan, out paint)) return paint.End; scan = scan.OriginalNode; } return null; }
private List<Node> SetNodeNameAndValue(ElementNode elementNode, Node valueNode, Node nameNode, IList<Node> body, AttributeNode originalForAttrib) { List<Node> result = new List<Node>(); if(elementNode.IsTag("textarea")) { if (valueNode != null) { elementNode.IsEmptyElement = false; body.Add(valueNode); } } else { string inputType = elementNode.GetAttributeValue("type"); switch (inputType.ToUpper()) { case "CHECKBOX": elementNode.Attributes.Add(new AttributeNode("value", "true")); // DODGY sorry will figure something decent out soon AddCheckedAttribute(elementNode, originalForAttrib); break; default: if (valueNode != null) elementNode.Attributes.Add(new AttributeNode("value", new List<Node>() { valueNode })); break; } } elementNode.Attributes.Add(new AttributeNode("name", new List<Node>() { nameNode })); return result; }
private void ThenRetrievedAttributeShouldWrap(Node attributeNode) { Context.GetAttributeResult.ShouldNotBeNull(); Context.GetAttributeResult.Unwrap().ShouldEqual(attributeNode); }
private IEnumerable<Completion> GetForSpecialNode(Node specialNode) { var knownCompletions = new List<Completion>(); var knownAttributes = GetKnownAttributesForSpecialNode((SpecialNode)specialNode); knownAttributes.ForEach(attribute => knownCompletions.Add( new Completion( attribute, GetInsertionTextForContext(attribute), String.Format("'{0}' attribute for '{1}' element", attribute, ((SpecialNode)specialNode).Element.Name), GetIcon(Constants.ICON_SparkAttribute), null))); return knownCompletions; }
private void Add(Node node) { Nodes.Add(node); }
private CompletionSet GetCompletionSetFor(Node node) { char currentCharacter = _textBuffer.CurrentSnapshot[_triggerPoint - 1]; switch (currentCharacter) { case '<': return SparkCompletionSetFactory.Create<SparkElementCompletionSet>(_viewExplorer, _trackingSpan); case '"': return SparkCompletionSetFactory.Create<SparkAttributeCompletionSet>(_viewExplorer, _trackingSpan); default: break; } if (node is ElementNode) return SparkCompletionSetFactory.Create<SparkElementCompletionSet>(_viewExplorer, _trackingSpan); if (node is AttributeNode) return SparkCompletionSetFactory.Create<SparkAttributeCompletionSet>(_viewExplorer, _trackingSpan); return null; }
public void Accept(Node node) { _nodes.Add(node); }
private void CodeExpressionResultShouldWrap(Node node) { Context.AddCodeExpressionNodeResult.Unwrap().ShouldEqual(node); }
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; }