| // <copyright file="StringSyntaxAttribute.cs" company="Selenium Committers"> |
| // Licensed to the Software Freedom Conservancy (SFC) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The SFC licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // </copyright> |
| |
| #if !NET8_0_OR_GREATER |
| |
| #pragma warning disable IDE0130 // Namespace does not match folder structure |
| namespace System.Diagnostics.CodeAnalysis; |
| #pragma warning restore IDE0130 // Namespace does not match folder structure |
| |
| /// <summary>Specifies the syntax used in a string.</summary> |
| [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = false)] |
| internal sealed class StringSyntaxAttribute : Attribute |
| { |
| /// <summary>Initializes the <see cref="StringSyntaxAttribute"/> with the identifier of the syntax used.</summary> |
| /// <param name="syntax">The syntax identifier.</param> |
| public StringSyntaxAttribute(string syntax) |
| { |
| Syntax = syntax; |
| Arguments = []; |
| } |
| |
| /// <summary>Initializes the <see cref="StringSyntaxAttribute"/> with the identifier of the syntax used.</summary> |
| /// <param name="syntax">The syntax identifier.</param> |
| /// <param name="arguments">Optional arguments associated with the specific syntax employed.</param> |
| public StringSyntaxAttribute(string syntax, params object?[] arguments) |
| { |
| Syntax = syntax; |
| Arguments = arguments; |
| } |
| |
| /// <summary>Gets the identifier of the syntax used.</summary> |
| public string Syntax { get; } |
| |
| /// <summary>Optional arguments associated with the specific syntax employed.</summary> |
| public object?[] Arguments { get; } |
| |
| /// <summary>The syntax identifier for strings containing composite formats for string formatting.</summary> |
| public const string CompositeFormat = nameof(CompositeFormat); |
| |
| /// <summary>The syntax identifier for strings containing date format specifiers.</summary> |
| public const string DateOnlyFormat = nameof(DateOnlyFormat); |
| |
| /// <summary>The syntax identifier for strings containing date and time format specifiers.</summary> |
| public const string DateTimeFormat = nameof(DateTimeFormat); |
| |
| /// <summary>The syntax identifier for strings containing <see cref="Enum"/> format specifiers.</summary> |
| public const string EnumFormat = nameof(EnumFormat); |
| |
| /// <summary>The syntax identifier for strings containing <see cref="Guid"/> format specifiers.</summary> |
| public const string GuidFormat = nameof(GuidFormat); |
| |
| /// <summary>The syntax identifier for strings containing JavaScript Object Notation (JSON).</summary> |
| public const string Json = nameof(Json); |
| |
| /// <summary>The syntax identifier for strings containing numeric format specifiers.</summary> |
| public const string NumericFormat = nameof(NumericFormat); |
| |
| /// <summary>The syntax identifier for strings containing regular expressions.</summary> |
| public const string Regex = nameof(Regex); |
| |
| /// <summary>The syntax identifier for strings containing time format specifiers.</summary> |
| public const string TimeOnlyFormat = nameof(TimeOnlyFormat); |
| |
| /// <summary>The syntax identifier for strings containing <see cref="TimeSpan"/> format specifiers.</summary> |
| public const string TimeSpanFormat = nameof(TimeSpanFormat); |
| |
| /// <summary>The syntax identifier for strings containing URIs.</summary> |
| public const string Uri = nameof(Uri); |
| |
| /// <summary>The syntax identifier for strings containing XML.</summary> |
| public const string Xml = nameof(Xml); |
| } |
| |
| #endif |