Ejemplo n.º 1
0
 public ParameterDirectiveInfo()
     : base("parameter")
 {
     TypeAttribute       = new DirectiveAttributeInfo("type", DirectiveAttributeOptions.Required);
     NameAttribute       = new DirectiveAttributeInfo("name", DirectiveAttributeOptions.Required | DirectiveAttributeOptions.DisplayInCodeStructure);
     SupportedAttributes = ImmutableArray.FromArguments(TypeAttribute, NameAttribute);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="InvalidAttributeValueHighlighting"/> class.
 /// </summary>
 /// <param name="associatedNode">The tree node associated with this highlighting.</param>
 /// <param name="directiveAttributeInfo">The <see cref="DirectiveAttributeInfo"/> representing the attribute in error.</param>
 /// <param name="errorMessage">The error message.</param>
 public InvalidAttributeValueHighlighting([NotNull] IT4Token associatedNode, [CanBeNull] DirectiveAttributeInfo directiveAttributeInfo,
                                          [NotNull] string errorMessage)
     : base(associatedNode)
 {
     _directiveAttributeInfo = directiveAttributeInfo;
     _errorMessage           = errorMessage;
 }
Ejemplo n.º 3
0
        protected override bool AddLookupItems(T4CodeCompletionContext context, IItemsCollector collector)
        {
            ITreeNode node = context.BasicContext.File.FindNodeAt(context.BasicContext.SelectedTreeRange);

            Assertion.AssertNotNull(node, "node == null");
            var ranges = context.BasicContext.GetRanges(node);

            collector.AddRanges(ranges);

            var attribute = node.GetContainingNode <IT4DirectiveAttribute>();

            Assertion.AssertNotNull(attribute, "attribute != null");

            var directive = attribute.GetContainingNode <IT4Directive>();

            Assertion.AssertNotNull(directive, "directive != null");

            DirectiveInfo          directiveInfo = _directiveInfoManager.GetDirectiveByName(directive.GetName());
            DirectiveAttributeInfo attributeInfo = directiveInfo?.GetAttributeByName(attribute.GetName());

            if (attributeInfo == null)
            {
                return(false);
            }

            foreach (string intellisenseValue in attributeInfo.IntelliSenseValues)
            {
                var item = new TextLookupItem(intellisenseValue);
                item.InitializeRanges(ranges, context.BasicContext);
                collector.Add(item);
            }

            return(true);
        }
Ejemplo n.º 4
0
        public TemplateDirectiveInfo() : base("template")
        {
            LanguageAttribute     = new LanguageAttributeInfo();
            HostSpecificAttribute = new EnumDirectiveAttributeInfo(
                "hostspecific",
                DirectiveAttributeOptions.None,
                "true",
                "false",
                "trueFromBase"
                );
            DebugAttribute           = new BooleanDirectiveAttributeInfo("debug", DirectiveAttributeOptions.None);
            InheritsAttribute        = new DirectiveAttributeInfo("inherits", DirectiveAttributeOptions.None);
            CultureAttribute         = new CultureDirectiveAttributeInfo("culture", DirectiveAttributeOptions.None);
            CompilerOptionsAttribute = new DirectiveAttributeInfo("compilerOptions", DirectiveAttributeOptions.None);
            LinePragmasAttribute     = new BooleanDirectiveAttributeInfo("linePragmas", DirectiveAttributeOptions.None);
            VisibilityAttribute      = new T4VisibilityDirectiveAttributeInfo(DirectiveAttributeOptions.None);


            SupportedAttributes = new List <DirectiveAttributeInfo>(8)
            {
                LanguageAttribute,
                HostSpecificAttribute,
                DebugAttribute,
                InheritsAttribute,
                CultureAttribute,
                CompilerOptionsAttribute,
                LinePragmasAttribute,
                VisibilityAttribute
            }.ToImmutableArray();
        }
Ejemplo n.º 5
0
 public IncludeDirectiveInfo() : base("include")
 {
     FileAttribute = new DirectiveAttributeInfo("file",
                                                DirectiveAttributeOptions.Required | DirectiveAttributeOptions.DisplayInCodeStructure);
     OnceAttribute       = new BooleanDirectiveAttributeInfo("once", DirectiveAttributeOptions.None);
     SupportedAttributes = ImmutableArray.FromArguments(FileAttribute, OnceAttribute);
 }
Ejemplo n.º 6
0
        private void ProcessAttributeValue([NotNull] T4Token valueNode)
        {
            if (!(valueNode.Parent is IT4DirectiveAttribute attribute))
            {
                return;
            }

            if (attribute.ValueError != null)
            {
                AddHighlighting(valueNode.GetHighlightingRange(), new InvalidAttributeValueHighlighting(valueNode, null, attribute.ValueError));
                return;
            }

            if (!(attribute.Parent is IT4Directive directive))
            {
                return;
            }

            DirectiveAttributeInfo attributeInfo = _directiveInfoManager.GetDirectiveByName(directive.GetName())?.GetAttributeByName(attribute.GetName());

            if (attributeInfo == null || attributeInfo.IsValid(valueNode.GetText()))
            {
                return;
            }

            AddHighlighting(valueNode.GetHighlightingRange(), new InvalidAttributeValueHighlighting(valueNode, attributeInfo, "Invalid attribute value"));
        }
Ejemplo n.º 7
0
 public OutputDirectiveInfo()
     : base("output")
 {
     ExtensionAttribute  = new DirectiveAttributeInfo("extension", DirectiveAttributeOptions.None);
     EncodingAttribute   = new EncodingDirectiveAttributeInfo(DirectiveAttributeOptions.None);
     SupportedAttributes = ImmutableArray.FromArguments(ExtensionAttribute, EncodingAttribute);
 }
Ejemplo n.º 8
0
 public ImportDirectiveInfo()
     : base("import")
 {
     NamespaceAttribute = new DirectiveAttributeInfo(
         "namespace",
         DirectiveAttributeOptions.Required | DirectiveAttributeOptions.DisplayInCodeStructure
         );
     SupportedAttributes = ImmutableArray.FromArguments(NamespaceAttribute);
 }
Ejemplo n.º 9
0
        private void ProcessAttributeValue([NotNull] T4Token valueNode)
        {
            var attribute = valueNode.Parent as IT4DirectiveAttribute;

            if (attribute == null)
            {
                return;
            }

            if (attribute.ValueError != null)
            {
                AddHighlighting(new HighlightingInfo(valueNode.GetHighlightingRange(),
                                                     new InvalidAttributeValueHighlighting(valueNode, null, attribute.ValueError)));
                return;
            }

            var directive = attribute.Parent as IT4Directive;

            if (directive == null)
            {
                return;
            }

            DirectiveInfo directiveInfo = _directiveInfoManager.GetDirectiveByName(directive.GetName());

            if (directiveInfo == null)
            {
                return;
            }

            DirectiveAttributeInfo attributeInfo = directiveInfo.GetAttributeByName(attribute.GetName());

            if (attributeInfo == null)
            {
                return;
            }

            if (attributeInfo.IsValid(valueNode.GetText()))
            {
                return;
            }

            AddHighlighting(new HighlightingInfo(valueNode.GetHighlightingRange(),
                                                 new InvalidAttributeValueHighlighting(valueNode, attributeInfo, "Invalid attribute value")));
        }
Ejemplo n.º 10
0
        private string GetDirectiveText()
        {
            IT4Directive directive = GetTreeNode();
            string       name      = directive?.Name?.GetText();

            if (name == null)
            {
                return("???");
            }

            DirectiveInfo directiveInfo = T4DirectiveInfoManager.GetDirectiveByName(name);

            if (directiveInfo == null)
            {
                return(name);
            }

            // display the directive with the attributes that are marked with DisplayInCodeStructure
            var builder = new StringBuilder(name);

            foreach (IT4DirectiveAttribute attribute in directive.AttributesEnumerable)
            {
                DirectiveAttributeInfo attributeInfo = directiveInfo.GetAttributeByName(attribute.Name.GetText());
                if (attributeInfo?.IsDisplayedInCodeStructure != true)
                {
                    continue;
                }

                builder.Append(' ');
                builder.Append(attributeInfo.Name);
                if (attribute.Value != null)
                {
                    builder.Append("=\"");
                    builder.Append(attribute.Value.GetText());
                    builder.Append('"');
                }
            }
            return(builder.ToString());
        }
Ejemplo n.º 11
0
 public static IT4DirectiveAttribute GetFirstAttribute(
     [NotNull] this IT4Directive directive,
     [NotNull] DirectiveAttributeInfo info
     ) => directive.Attributes.FirstOrDefault(it =>
                                              string.Equals(it.Name.GetText(), info.Name, StringComparison.OrdinalIgnoreCase));
Ejemplo n.º 12
0
 public static IEnumerable <IT4DirectiveAttribute> GetAttributes(
     [NotNull] this IT4Directive directive,
     [NotNull] DirectiveAttributeInfo info
     ) => directive.Attributes.Where(it =>
                                     string.Equals(it.Name.GetText(), info.Name, StringComparison.OrdinalIgnoreCase));