Example #1
0
        public string Visit(NamedElement value)
        {
            IEnumerable <string> textList = value.Attributes.Where(o => o.Attribute == "text").Select(o => o.Accept(valueVisitor));
            IEnumerable <string> attrList = value.Attributes.Where(o => o.Attribute != "text").Select(o => o.Accept(valueVisitor));

            // Get values that could only be attributes in html
            IEnumerable <string> objList = ResolveChildElementsOptions(value.Children).Select(o => o.Accept(this));

            return(HtmlGenerator.CreateHtmlTag(value.Identifier, textList, attrList, objList));
        }
Example #2
0
        public string Visit(ImageElement value)
        {
            NamedElement?source     = null;
            var          sourceList = value.Children
                                      .Where(o => o is NamedElement nEl && nEl.Identifier.Equals("source", StringComparison.OrdinalIgnoreCase))
                                      .Cast <NamedElement>();

            foreach (var item in sourceList)
            {
                if (item.ConditionalOptions != null)
                {
                    // condition is true if not null
                    var conditionElement = optionVisitor.Visit(item.ConditionalOptions);
                    if (conditionElement != null)
                    {
                        source = item;
                    }
                }
                else
                {
                    source = item;
                }
            }

            if (source != null)
            {
                var src = source.Attributes
                          .Where(o => o is DataValue data && data.Attribute.Equals("src", StringComparison.OrdinalIgnoreCase))
                          .Cast <DataValue>().First();

                value.Attributes.Add(src);
            }

            IEnumerable <string> textList = value.Attributes.Where(o => o.Attribute == "text").Select(o => o.Accept(valueVisitor));
            IEnumerable <string> attrList = value.Attributes.Where(o => o.Attribute != "text" && o.GetType() != typeof(ListValue)).Select(o => o.Accept(valueVisitor));

            NamedElement?description = value.Children
                                       .Where(o => o is NamedElement nEl && nEl.Identifier.Equals("description", StringComparison.OrdinalIgnoreCase))
                                       .Cast <NamedElement>().FirstOrDefault();

            var imgElement = HtmlGenerator.CreateHtmlTag("img", textList, attrList, Enumerable.Empty <string>());

            if (description == null)
            {
                return(imgElement);
            }

            List <string> objList = new()
            {
                imgElement,
                description.Accept(this),
            };

            return(HtmlGenerator.CreateHtmlTag("figure", textList, Enumerable.Empty <string>(), objList));
        }
Example #3
0
        public string Visit(SelectElement value)
        {
            IEnumerable <string> textList = value.Attributes.Where(o => o.Attribute == "text").Select(o => o.Accept(valueVisitor));
            IEnumerable <string> attrList = value.Attributes
                                            .Where(o => o.Attribute != "text" && o.GetType() != typeof(ListValue))
                                            .Select(o => o.Accept(valueVisitor));

            // Select element can only have options as children to all others are ignored
            IEnumerable <string> objList = ResolveChildElementsOptions(
                value.Children.Where(o => o is NamedElement nEl && nEl.Identifier.Equals("option", StringComparison.OrdinalIgnoreCase))
                ).Select(o => o.Accept(this)).ToList();

            return(HtmlGenerator.CreateHtmlTag("select", textList, attrList, objList));
        }