private static TagHelperAttributeDescriptor ToAttributeDescriptor(
            IPropertyInfo property,
            string attributeName,
            string typeName,
            bool isIndexer,
            bool isStringProperty,
            bool designTime)
        {
            TagHelperAttributeDesignTimeDescriptor propertyDesignTimeDescriptor = null;

#if !DOTNET5_4
            if (designTime)
            {
                var runtimeProperty = property as RuntimePropertyInfo;
                if (runtimeProperty != null)
                {
                    propertyDesignTimeDescriptor =
                        TagHelperDesignTimeDescriptorFactory.CreateAttributeDescriptor(runtimeProperty.Property);
                }
            }
#endif

            return(new TagHelperAttributeDescriptor
            {
                Name = attributeName,
                PropertyName = property.Name,
                TypeName = typeName,
                IsStringProperty = isStringProperty,
                IsIndexer = isIndexer,
                DesignTimeDescriptor = propertyDesignTimeDescriptor
            });
        }
        private static TagHelperAttributeDescriptor ToAttributeDescriptor(
            PropertyInfo property,
            string attributeName,
            string typeName,
            bool isIndexer,
            bool designTime)
        {
            TagHelperAttributeDesignTimeDescriptor propertyDesignTimeDescriptor = null;

#if !DNXCORE50
            if (designTime)
            {
                propertyDesignTimeDescriptor =
                    TagHelperDesignTimeDescriptorFactory.CreateAttributeDescriptor(property);
            }
#endif

            return(new TagHelperAttributeDescriptor
            {
                Name = attributeName,
                PropertyName = property.Name,
                TypeName = typeName,
                IsIndexer = isIndexer,
                DesignTimeDescriptor = propertyDesignTimeDescriptor
            });
        }
Пример #3
0
        public void CreateAttributeDescriptor_WithLocalizedProperty_ReturnsExpectedDescriptors(
            Type tagHelperType,
            TagHelperAttributeDesignTimeDescriptor expectedDesignTimeDescriptor,
            string culture)
        {
            // Arrange
            var mockPropertyInfo = new Mock <PropertyInfo>();

            mockPropertyInfo.Setup(propertyInfo => propertyInfo.DeclaringType).Returns(tagHelperType);
            mockPropertyInfo
            .Setup(propertyInfo => propertyInfo.Name)
            .Returns(nameof(DocumentedTagHelper.RemarksAndSummaryProperty));
            TagHelperAttributeDesignTimeDescriptor designTimeDescriptor;

            // Act
            using (new CultureReplacer(culture))
            {
                designTimeDescriptor = TagHelperDesignTimeDescriptorFactory.CreateAttributeDescriptor(
                    mockPropertyInfo.Object);
            }

            // Assert
            Assert.Equal(
                expectedDesignTimeDescriptor,
                designTimeDescriptor,
                TagHelperAttributeDesignTimeDescriptorComparer.Default);
        }
        private static IEnumerable <TagHelperDescriptor> BuildTagHelperDescriptors(
            ITypeInfo typeInfo,
            string assemblyName,
            IEnumerable <TagHelperAttributeDescriptor> attributeDescriptors,
            IEnumerable <HtmlTargetElementAttribute> targetElementAttributes,
            IEnumerable <string> allowedChildren,
            bool designTime)
        {
            TagHelperDesignTimeDescriptor typeDesignTimeDescriptor = null;

#if !DOTNET5_4
            if (designTime)
            {
                var runtimeTypeInfo = typeInfo as RuntimeTypeInfo;
                if (runtimeTypeInfo != null)
                {
                    typeDesignTimeDescriptor =
                        TagHelperDesignTimeDescriptorFactory.CreateDescriptor(runtimeTypeInfo.TypeInfo.AsType());
                }
            }
#endif

            var typeName = typeInfo.FullName;

            // If there isn't an attribute specifying the tag name derive it from the name
            if (!targetElementAttributes.Any())
            {
                var name = typeInfo.Name;

                if (name.EndsWith(TagHelperNameEnding, StringComparison.OrdinalIgnoreCase))
                {
                    name = name.Substring(0, name.Length - TagHelperNameEnding.Length);
                }

                return(new[]
                {
                    BuildTagHelperDescriptor(
                        ToHtmlCase(name),
                        typeName,
                        assemblyName,
                        attributeDescriptors,
                        requiredAttributes: Enumerable.Empty <string>(),
                        allowedChildren: allowedChildren,
                        tagStructure: default(TagStructure),
                        parentTag: null,
                        designTimeDescriptor: typeDesignTimeDescriptor)
                });
            }

            return(targetElementAttributes.Select(
                       attribute =>
                       BuildTagHelperDescriptor(
                           typeName,
                           assemblyName,
                           attributeDescriptors,
                           attribute,
                           allowedChildren,
                           typeDesignTimeDescriptor)));
        }
Пример #5
0
        public void CreateDescriptor_CapturesOutputElementHint(
            Type tagHelperType,
            TagHelperDesignTimeDescriptor expectedDescriptor)
        {
            // Act
            var descriptors = TagHelperDesignTimeDescriptorFactory.CreateDescriptor(tagHelperType);

            // Assert
            Assert.Equal(expectedDescriptor, descriptors, TagHelperDesignTimeDescriptorComparer.Default);
        }
Пример #6
0
        public void CreateDescriptor_WithType_ReturnsExpectedDescriptors(
            Type tagHelperType,
            TagHelperDesignTimeDescriptor expectedDesignTimeDescriptor)
        {
            // Act
            var designTimeDescriptor = TagHelperDesignTimeDescriptorFactory.CreateDescriptor(tagHelperType);

            // Assert
            Assert.Equal(expectedDesignTimeDescriptor, designTimeDescriptor, TagHelperDesignTimeDescriptorComparer.Default);
        }
        /// <summary>
        /// Instantiates a new <see cref="TagHelperDescriptorFactory"/>.
        /// </summary>
        /// <param name="designTime">
        /// Indicates if <see cref="TagHelperDescriptor"/>s should be created for design time.
        /// </param>
        public TagHelperDescriptorFactory(bool designTime)
        {
#if !DOTNET5_4
            if (designTime)
            {
                _designTimeDescriptorFactory = new TagHelperDesignTimeDescriptorFactory();
            }
#endif

            _designTime = designTime;
        }
        private static IEnumerable <TagHelperDescriptor> BuildTagHelperDescriptors(
            TypeInfo typeInfo,
            string assemblyName,
            IEnumerable <TagHelperAttributeDescriptor> attributeDescriptors,
            IEnumerable <TargetElementAttribute> targetElementAttributes,
            bool designTime)
        {
            TagHelperDesignTimeDescriptor typeDesignTimeDescriptor = null;

#if !DNXCORE50
            if (designTime)
            {
                typeDesignTimeDescriptor = TagHelperDesignTimeDescriptorFactory.CreateDescriptor(typeInfo.GetType());
            }
#endif

            var typeName = typeInfo.FullName;

            // If there isn't an attribute specifying the tag name derive it from the name
            if (!targetElementAttributes.Any())
            {
                var name = typeInfo.Name;

                if (name.EndsWith(TagHelperNameEnding, StringComparison.OrdinalIgnoreCase))
                {
                    name = name.Substring(0, name.Length - TagHelperNameEnding.Length);
                }

                return(new[]
                {
                    BuildTagHelperDescriptor(
                        ToHtmlCase(name),
                        typeName,
                        assemblyName,
                        attributeDescriptors,
                        requiredAttributes: Enumerable.Empty <string>(),
                        designTimeDescriptor: typeDesignTimeDescriptor)
                });
            }

            return(targetElementAttributes.Select(
                       attribute =>
                       BuildTagHelperDescriptor(
                           typeName,
                           assemblyName,
                           attributeDescriptors,
                           attribute,
                           typeDesignTimeDescriptor)));
        }
Пример #9
0
        public void CreateDescriptor_WithLocalizedType_ReturnsExpectedDescriptors(
            Type tagHelperType,
            TagHelperDesignTimeDescriptor expectedDesignTimeDescriptor,
            string culture)
        {
            // Arrange
            TagHelperDesignTimeDescriptor designTimeDescriptor;

            // Act
            using (new CultureReplacer(culture))
            {
                designTimeDescriptor = TagHelperDesignTimeDescriptorFactory.CreateDescriptor(tagHelperType);
            }

            // Assert
            Assert.Equal(expectedDesignTimeDescriptor, designTimeDescriptor, TagHelperDesignTimeDescriptorComparer.Default);
        }
Пример #10
0
        public void CreateAttributeDescriptor_ReturnsExpectedDescriptors(
            Type tagHelperType,
            string propertyName,
            TagHelperAttributeDesignTimeDescriptor expectedDesignTimeDescriptor)
        {
            // Arrange
            var mockPropertyInfo = new Mock <PropertyInfo>();

            mockPropertyInfo.Setup(propertyInfo => propertyInfo.DeclaringType).Returns(tagHelperType);
            mockPropertyInfo.Setup(propertyInfo => propertyInfo.Name).Returns(propertyName);

            // Act
            var designTimeDescriptor = TagHelperDesignTimeDescriptorFactory.CreateAttributeDescriptor(
                mockPropertyInfo.Object);

            // Assert
            Assert.Equal(
                expectedDesignTimeDescriptor,
                designTimeDescriptor,
                TagHelperAttributeDesignTimeDescriptorComparer.Default);
        }