示例#1
0
        public void Should_update_input_with_macro_value()
        {
            var parser = new ButterflyParser();
            parser.LoadDefaultStrategies(new DefaultParseStrategyFactory());
            parser.MacroFactory = new ActivatorFactory<IButterflyMacro>(new NamedTypeRegistry<IButterflyMacro>().RegisterType<FooMacro>("foo"));

            var result = parser.Parse("[::foo] foo [::foo]");
            var text = parser.FlushAndReturn();

            Assert.That(result.Markup, Is.EqualTo("bar foo bar"));
            AssertWithNoRegardForLineBreaks(text, "<p>bar foo bar</p>");
        }
示例#2
0
        public void Should_generate_nested_scope_tree()
        {
            var parser = new ButterflyParser()
                .LoadDefaultStrategies(new DefaultParseStrategyFactory());

            var tree = parser.Parse("foo __bar ''baz ==lulz=='' --oh hai!--__").ScopeTree;

            /*
             * <p>
             *   <strong>
             *	   <em>
             *	     <tt>
             *	   <ins>
            */

            Assert.That(tree.Count, Is.EqualTo(5));
            Assert.That(tree.Nodes.Count(), Is.EqualTo(1));

            var p = tree.Nodes.First();
            Assert.That(p.Scope.GetType(), Is.EqualTo(ScopeTypeCache.Paragraph));
            Assert.That(p.Depth, Is.EqualTo(1));
            Assert.That(p.Parent, Is.Null);
            Assert.That(p.Count, Is.EqualTo(4));
            Assert.That(p.Children.Count(), Is.EqualTo(1));

            var strong = p.Children.First();
            Assert.That(strong.Scope.GetType(), Is.EqualTo(ScopeTypeCache.Strong));
            Assert.That(strong.Parent, Is.EqualTo(p));
            Assert.That(strong.Depth, Is.EqualTo(2));
            Assert.That(strong.Count, Is.EqualTo(3));
            Assert.That(strong.Children.Count(), Is.EqualTo(2));

            var em = strong.Children.First();
            Assert.That(em.Scope.GetType(), Is.EqualTo(ScopeTypeCache.Emphasis));
            Assert.That(em.Parent, Is.EqualTo(strong));
            Assert.That(em.Depth, Is.EqualTo(3));
            Assert.That(em.Count, Is.EqualTo(1));
            Assert.That(em.Children.Count(), Is.EqualTo(1));

            var ins = strong.Children.Last();
            Assert.That(ins.Scope.GetType(), Is.EqualTo(ScopeTypeCache.Underline));
            Assert.That(ins.Parent, Is.EqualTo(strong));
            Assert.That(ins.Depth, Is.EqualTo(3));
            Assert.That(ins.Count, Is.EqualTo(0));
            Assert.That(ins.Children.Count(), Is.EqualTo(0));

            var tt = em.Children.First();
            Assert.That(tt.Scope.GetType(), Is.EqualTo(ScopeTypeCache.Teletype));
            Assert.That(tt.Parent, Is.EqualTo(em));
            Assert.That(tt.Depth, Is.EqualTo(4));
            Assert.That(tt.Count, Is.EqualTo(0));
            Assert.That(tt.Children.Count(), Is.EqualTo(0));
        }
示例#3
0
        public void Should_parse_markup_in_macros()
        {
            var parser = new ButterflyParser();
            parser.LoadDefaultStrategies(new DefaultParseStrategyFactory());
            parser.MacroFactory = new ActivatorFactory<IButterflyMacro>(new NamedTypeRegistry<IButterflyMacro>().RegisterType<BarMacro>("bar"));

            var result = parser.Parse("[::bar]");
            var text = parser.FlushAndReturn();

            Assert.That(result.Markup, Is.EqualTo("__bold__"));
            AssertWithNoRegardForLineBreaks(text, "<p><strong>bold</strong></p>");
        }