public static Generator ToHTML5(this Element self, IReadOnlyCollection<ITag> inners, Generator generator) { var tags = new Generator(generator.Indention + 1); inners.ForEach(x => x.ToHTML5(tags)); var annotations = String.Concat(self.Annotations.Select(x => x.ToHTML5())); var isText = inners.Count == 1 && inners.Single() is Text; if (!inners.Any()) { if (self.Name.ToLower() == "script") generator.Write("<{0}{1}></{0}>", self.Name, annotations); else generator.Write("<{0}{1} />", self.Name, annotations); } else if (isText) { generator.Write("<{0}{1}>{2}</{0}>", self.Name, annotations, tags.Generate().Trim()); } else { generator.Write("<{0}{1}>{2}", self.Name, annotations, tags.Generate()); generator.Write("</{0}>", self.Name); } return generator; }
public static Generator ToHTML5(this DocType self, Generator generator) { switch (self) { case DocType.Html5: generator.Write("<!DOCTYPE html>"); break; default: throw new ArgumentOutOfRangeException("self"); } return generator; }
public static Generator ToHTML5(this Text self, Generator generator) { generator.Write(self.Value); return generator; }
public static Generator ToHTML5(this Comment self, Generator generator) { generator.Write("<!-- {0} -->", self.Text); return generator; }