Esempio n. 1
0
        public void CollapsesPreviousWhiteSpace()
        {
            var factory = new Factory();

            // "Hello {{~test}}"
            var document = factory.Document(
                factory.Text("Hello"),
                factory.WhiteSpace(1),
                factory.Expression(
                    factory.MetaCode("{{", T.OpenTag),
                    factory.MetaCode("~", T.Tilde),
                    factory.Span(SpanKind.Expression, factory.Symbol("this", T.Identifier)),
                    factory.MetaCode("}}", T.CloseTag)));

            factory = new Factory();

            // "Hello{{~test}}"
            var expected = factory.Document(
                factory.Text("Hello"),
                factory.WhiteSpace(1, collapsed: true),
                factory.Expression(
                    factory.MetaCode("{{", T.OpenTag),
                    factory.MetaCode("~", T.Tilde),
                    factory.Span(SpanKind.Expression, factory.Symbol("this", T.Identifier)),
                    factory.MetaCode("}}", T.CloseTag)));

            var visitor = new WhiteSpaceCollapsingParserVisitor();

            visitor.VisitBlock(document);

            var builder  = new StringBuilder();
            var comparer = new EquivalanceComparer(builder, 0);

            Assert.True(comparer.Equals(expected, document), builder.ToString());
        }
Esempio n. 2
0
        public void CollapsesWhiteSpaceInParentBlocks()
        {
            var factory = new Factory();

            // "Message:{{#this~}} Hello {{~/this~}} There"
            var document = factory.Document(
                factory.Text("Message:"),
                factory.Tag("this",
                            factory.TagElement("this",
                                               factory.MetaCode("{{", T.OpenTag),
                                               factory.MetaCode("#", T.Hash),
                                               factory.Expression(factory.Parameter("this")),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("}}", T.CloseTag)),
                            factory.WhiteSpace(1),
                            factory.Text("Hello"),
                            factory.WhiteSpace(1),
                            factory.TagElement("this",
                                               factory.MetaCode("{{", T.OpenTag),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("/", T.Slash),
                                               factory.Expression(factory.Parameter("this")),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("}}", T.CloseTag))),
                factory.WhiteSpace(1),
                factory.Text("There"));

            factory = new Factory();

            // "Message:{{#this~}}Hello{{~/this~}}There"
            var expected = factory.Document(
                factory.Text("Message:"),
                factory.Tag("this",
                            factory.TagElement("this",
                                               factory.MetaCode("{{", T.OpenTag),
                                               factory.MetaCode("#", T.Hash),
                                               factory.Expression(factory.Parameter("this")),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("}}", T.CloseTag)),
                            factory.WhiteSpace(1, collapsed: true),
                            factory.Text("Hello"),
                            factory.WhiteSpace(1, collapsed: true),
                            factory.TagElement("this",
                                               factory.MetaCode("{{", T.OpenTag),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("/", T.Slash),
                                               factory.Expression(factory.Parameter("this")),
                                               factory.MetaCode("~", T.Tilde),
                                               factory.MetaCode("}}", T.CloseTag))),
                factory.WhiteSpace(1, collapsed: true),
                factory.Text("There"));

            var visitor = new WhiteSpaceCollapsingParserVisitor();

            visitor.VisitBlock(document);

            var builder  = new StringBuilder();
            var comparer = new EquivalanceComparer(builder, 0);

            Assert.True(comparer.Equals(expected, document), builder.ToString());
        }