public static string ToHTML5(this Ast self) { var generator = new Generator(); self.DocType.ToHTML5(generator); self.Root.ToHTML5(generator); return generator.Generate().Trim(); }
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 ITag self, Generator generator) { if (self is Tag) return (self as Tag).ToHTML5(generator); if (self is Text) return (self as Text).ToHTML5(generator); if (self is Comment) return (self as Comment).ToHTML5(generator); if (self is CompositeTag) return (self as CompositeTag).ToHTML5(generator); throw new ArgumentException(); }
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 CompositeTag self, Generator generator) { var result = self.Left.ToHTML5(generator); return self.Right.ToHTML5(result); }
public static Generator ToHTML5(this Text self, Generator generator) { generator.Write(self.Value); return generator; }
public static Generator ToHTML5(this Tag self, Generator generator) { return self.Element.ToHTML5(self.Inners, generator); }
public static Generator ToHTML5(this Comment self, Generator generator) { generator.Write("<!-- {0} -->", self.Text); return generator; }