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)); }
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)); }
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)); }