/// <summary> /// Finishes building the directive by appending its name and all attributes. /// </summary> /// <param name="parent">The directive.</param> internal void Finish([NotNull] CompositeElement parent) { if (_firstInfo == null) { _treeBuilder.AppendMissingToken(parent, MissingTokenType.DirectiveName); return; } AttributeInfo attrInfo; if (_firstInfo.HasNameOnly) { _treeBuilder.AppendNewChild(parent, _firstInfo.NameToken); attrInfo = _firstInfo.Next; } else { attrInfo = _firstInfo; _treeBuilder.AppendMissingToken(parent, MissingTokenType.DirectiveName); } while (attrInfo != null) { _treeBuilder.AppendNewChild(parent, attrInfo.ToAttribute()); attrInfo = attrInfo.Next; } }
internal T4DirectiveAttribute ToAttribute() { var attribute = new T4DirectiveAttribute(); if (NameToken != null) { _builder.AppendNewChild(attribute, NameToken); if (EqualToken != null) { _builder.AppendNewChild(attribute, EqualToken); } else { if (OpeningQuoteToken == null) { Assertion.Assert(ValueToken == null, "ValueToken should be null if there's no opening quote."); Assertion.Assert(ClosingQuoteToken == null, "ClosingQuoteToken should be null if there's no opening quote."); _builder.AppendMissingToken(attribute, MissingTokenType.EqualSignAndAttributeValue); return(attribute); } _builder.AppendMissingToken(attribute, MissingTokenType.EqualSign); } } else if (EqualToken != null) { _builder.AppendMissingToken(attribute, MissingTokenType.AttributeName); _builder.AppendNewChild(attribute, EqualToken); } else { _builder.AppendMissingToken(attribute, MissingTokenType.AttributeNameAndEqualSign); } if (OpeningQuoteToken == null) { Assertion.Assert(ValueToken == null, "ValueToken should be null if there's no opening quote."); Assertion.Assert(ClosingQuoteToken == null, "ClosingQuoteToken should be null if there's no opening quote."); _builder.AppendMissingToken(attribute, MissingTokenType.AttributeValue); return(attribute); } _builder.AppendNewChild(attribute, OpeningQuoteToken); if (ValueToken != null) { _builder.AppendNewChild(attribute, ValueToken); } if (ClosingQuoteToken != null) { _builder.AppendNewChild(attribute, ClosingQuoteToken); } else { _builder.AppendMissingToken(attribute, MissingTokenType.Quote); } return(attribute); }