Beispiel #1
0
Datei: Y3.cs Projekt: kokudori/Y3
 public static string ToHTML5(this Ast self)
 {
     var generator = new Generator();
     self.DocType.ToHTML5(generator);
     self.Root.ToHTML5(generator);
     return generator.Generate().Trim();
 }
Beispiel #2
0
        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;
        }
Beispiel #3
0
 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();
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 public static Generator ToHTML5(this CompositeTag self, Generator generator)
 {
     var result = self.Left.ToHTML5(generator);
     return self.Right.ToHTML5(result);
 }
Beispiel #6
0
 public static Generator ToHTML5(this Text self, Generator generator)
 {
     generator.Write(self.Value);
     return generator;
 }
Beispiel #7
0
 public static Generator ToHTML5(this Tag self, Generator generator)
 {
     return self.Element.ToHTML5(self.Inners, generator);
 }
Beispiel #8
0
 public static Generator ToHTML5(this Comment self, Generator generator)
 {
     generator.Write("<!-- {0} -->", self.Text);
     return generator;
 }