public void GetTokens_XmlComment_ReturnsUnparsed() { var input = new[] { MarkupGrammar.TokenUnparsed("!--", "--", @" a quick note ") }; var expected = new[] { ModelGrammar.TokenPrimitive(new UnparsedBlock("!--", "--", @" a quick note ")) }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_XmlDeclaration_ReturnsUnparsed() { var input = new[] { MarkupGrammar.TokenUnparsed("?", "?", @"xml version=""1.0""") }; var expected = new[] { ModelGrammar.TokenPrimitive(new UnparsedBlock("?", "?", @"xml version=""1.0""")) }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_AspNetPageDeclaration_ReturnsUnparsed() { var input = new[] { MarkupGrammar.TokenUnparsed("%@", "%", @" Page Language=""C#"" AutoEventWireup=""true"" CodeBehind=""Default.aspx.cs"" Inherits=""Foo._Default"" ") }; var expected = new[] { ModelGrammar.TokenPrimitive(new UnparsedBlock("%@", "%", @" Page Language=""C#"" AutoEventWireup=""true"" CodeBehind=""Default.aspx.cs"" Inherits=""Foo._Default"" ")) }; var converter = new JsonMLReader.JsonMLInTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_XmlDocTypeExternal_ReturnsUnparsed() { var input = new[] { MarkupGrammar.TokenUnparsed("!", "", @"DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd""" ) }; const string expected = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"">" ; var formatter = new HtmlFormatter(new DataWriterSettings()); var actual = formatter.Format(input); Assert.Equal(expected, actual); }
//[Fact(Skip="Embedded DOCTYPE not supported")] public void Format_XmlDocTypeLocal_ReturnsUnparsed() { var input = new[] { MarkupGrammar.TokenUnparsed("!", "", @"DOCTYPE doc [ <!ATTLIST normId id ID #IMPLIED> <!ATTLIST normNames attr NMTOKENS #IMPLIED> ]") }; const string expected = @"<!DOCTYPE doc [ <!ATTLIST normId id ID #IMPLIED> <!ATTLIST normNames attr NMTOKENS #IMPLIED> ]>"; var formatter = new HtmlFormatter(new DataWriterSettings()); var actual = formatter.Format(input); Assert.Equal(expected, actual); }
public void GetTokens_XmlDocTypeExternal_ReturnsUnparsed() { var input = new[] { ModelGrammar.TokenPrimitive(new UnparsedBlock("!", "", @"DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd""" )) }; var expected = new[] { MarkupGrammar.TokenUnparsed("!", "", @"DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.1//EN"" ""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd""" ) }; var converter = new JsonMLWriter.JsonMLOutTransformer(); var actual = converter.Transform(input).ToArray(); Assert.Equal(expected, actual); }
public void GetTokens_PhpHelloWorld_ReturnsSequence() { const string input = @"<html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html>"; var expected = new[] { MarkupGrammar.TokenElementBegin(new DataName("html")), MarkupGrammar.TokenPrimitive("\n\t"), MarkupGrammar.TokenElementBegin(new DataName("head")), MarkupGrammar.TokenPrimitive("\n\t\t"), MarkupGrammar.TokenElementBegin(new DataName("title")), MarkupGrammar.TokenPrimitive("PHP Test"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\n\t"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\n\t"), MarkupGrammar.TokenElementBegin(new DataName("body")), MarkupGrammar.TokenPrimitive("\n\t\t"), MarkupGrammar.TokenUnparsed("?", "?", @"php echo '<p>Hello World</p>'; "), MarkupGrammar.TokenPrimitive("\n\t"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\n"), MarkupGrammar.TokenElementEnd, }; var tokenizer = new XmlReader.XmlTokenizer(); var actual = tokenizer.GetTokens(input).ToArray(); Assert.Equal(expected, actual); }
public void Format_PhpHelloWorld_ReturnsMarkup() { var input = new[] { MarkupGrammar.TokenElementBegin(new DataName("html")), MarkupGrammar.TokenPrimitive("\r\n\t"), MarkupGrammar.TokenElementBegin(new DataName("head")), MarkupGrammar.TokenPrimitive("\r\n\t\t"), MarkupGrammar.TokenElementBegin(new DataName("title")), MarkupGrammar.TokenPrimitive("PHP Test"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\r\n\t"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\r\n\t"), MarkupGrammar.TokenElementBegin(new DataName("body")), MarkupGrammar.TokenPrimitive("\r\n\t\t"), MarkupGrammar.TokenUnparsed("?", "?", @"php echo '<p>Hello World</p>'; "), MarkupGrammar.TokenPrimitive("\r\n\t"), MarkupGrammar.TokenElementEnd, MarkupGrammar.TokenPrimitive("\r\n"), MarkupGrammar.TokenElementEnd, }; const string expected = @"<html> <head> <title>PHP Test</title> </head> <body> <?php echo '<p>Hello World</p>'; ?> </body> </html>"; var formatter = new HtmlFormatter(new DataWriterSettings()); var actual = formatter.Format(input); Assert.Equal(expected, actual); }
//[Fact(Skip="Embedded DOCTYPE not supported")] public void GetTokens_XmlDocTypeLocal_ReturnsUnparsed() { const string input = @"<!DOCTYPE doc [ <!ATTLIST normId id ID #IMPLIED> <!ATTLIST normNames attr NMTOKENS #IMPLIED> ]> <root />"; var expected = new[] { MarkupGrammar.TokenUnparsed("!", "", @"DOCTYPE doc [ <!ATTLIST normId id ID #IMPLIED> <!ATTLIST normNames attr NMTOKENS #IMPLIED> ]"), MarkupGrammar.TokenElementBegin(new DataName("root")), MarkupGrammar.TokenElementEnd }; var tokenizer = new XmlReader.XmlTokenizer(); var actual = tokenizer.GetTokens(input).ToArray(); Assert.Equal(expected, actual); }
/// <summary> /// Gets a token sequence from the XmlReader /// </summary> /// <param name="reader"></param> /// <returns></returns> public IEnumerable <Token <MarkupTokenType> > GetTokens(System.Xml.XmlReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } while (true) { // have to isolate try-catch away from yields try { if (!reader.Read()) { ((IDisposable)reader).Dispose(); break; } } catch (System.Xml.XmlException ex) { throw new DeserializationException(ex.Message, ex.LinePosition, ex.LineNumber, -1, ex); } catch (Exception ex) { throw new DeserializationException(ex.Message, -1, ex); } switch (reader.NodeType) { case System.Xml.XmlNodeType.Element: { DataName tagName = new DataName(reader.LocalName, reader.Prefix, reader.NamespaceURI); bool isVoidTag = reader.IsEmptyElement; IDictionary <DataName, string> attributes; if (reader.HasAttributes) { attributes = new CanonicalList(); while (reader.MoveToNextAttribute()) { if (String.IsNullOrEmpty(reader.Prefix) && reader.LocalName == "xmlns" || reader.Prefix == "xmlns") { continue; } attributes[new DataName(reader.LocalName, reader.Prefix, reader.NamespaceURI)] = reader.Value; } } else { attributes = null; } if (isVoidTag) { yield return(MarkupGrammar.TokenElementVoid(tagName)); } else { yield return(MarkupGrammar.TokenElementBegin(tagName)); } if (attributes != null) { foreach (var attribute in attributes) { yield return(MarkupGrammar.TokenAttribute(attribute.Key)); yield return(MarkupGrammar.TokenPrimitive(attribute.Value)); } } break; } case System.Xml.XmlNodeType.EndElement: { yield return(MarkupGrammar.TokenElementEnd); break; } case System.Xml.XmlNodeType.Attribute: { yield return(MarkupGrammar.TokenAttribute(new DataName(reader.Name, reader.Prefix, reader.NamespaceURI, true))); yield return(MarkupGrammar.TokenPrimitive(reader.Value)); break; } case System.Xml.XmlNodeType.Text: { yield return(MarkupGrammar.TokenPrimitive(reader.Value)); break; } case System.Xml.XmlNodeType.SignificantWhitespace: case System.Xml.XmlNodeType.Whitespace: { yield return(MarkupGrammar.TokenPrimitive(reader.Value)); break; } case System.Xml.XmlNodeType.CDATA: { yield return(MarkupGrammar.TokenPrimitive(reader.Value)); break; } case System.Xml.XmlNodeType.Entity: case System.Xml.XmlNodeType.EntityReference: case System.Xml.XmlNodeType.EndEntity: { break; } case System.Xml.XmlNodeType.ProcessingInstruction: case System.Xml.XmlNodeType.XmlDeclaration: { yield return(MarkupGrammar.TokenUnparsed("?", "?", reader.Name + " " + reader.Value)); break; } case System.Xml.XmlNodeType.Comment: { yield return(MarkupGrammar.TokenUnparsed("!--", "--", reader.Value)); break; } case System.Xml.XmlNodeType.DocumentType: { yield return(MarkupGrammar.TokenUnparsed("!DOCTYPE ", "", reader.Value)); break; } case System.Xml.XmlNodeType.Notation: { yield return(MarkupGrammar.TokenUnparsed("!NOTATION ", "", reader.Value)); break; } case System.Xml.XmlNodeType.None: { ((IDisposable)reader).Dispose(); yield break; } case System.Xml.XmlNodeType.Document: case System.Xml.XmlNodeType.DocumentFragment: default: { continue; } } } ; }