コード例 #1
0
        private bool TryParseCssValueComparison(RequiredAttributeDescriptorBuilder builder, out RequiredAttributeDescriptor.ValueComparisonMode valueComparison)
        {
            Debug.Assert(!AtEnd);

            if (CssValueComparisons.TryGetValue(Current, out valueComparison))
            {
                var op = Current;
                _index++;

                if (op != '=' && At('='))
                {
                    // Two length operator (ex: ^=). Move past the second piece
                    _index++;
                }
                else if (op != '=') // We're at an incomplete operator (ex: [foo^]
                {
                    var diagnostic = RazorDiagnosticFactory.CreateTagHelper_PartialRequiredAttributeOperator(op, _requiredAttributes);
                    builder.Diagnostics.Add(diagnostic);

                    return(false);
                }
            }
            else if (!At(']'))
            {
                var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRequiredAttributeOperator(Current, _requiredAttributes);
                builder.Diagnostics.Add(diagnostic);

                return(false);
            }

            builder.ValueComparisonMode = valueComparison;

            return(true);
        }