Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 9
0
        //[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);
        }
Esempio n. 10
0
            /// <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;
                    }
                    }
                }
                ;
            }