예제 #1
0
        public StringBuffer Mark(SourceInfo sourceInfo, IMarkdownContext context)
        {
            var result = StringBuffer.Empty;
            var parser = Parser;

            if (context != null)
            {
                parser.SwitchContext(context);
            }
            var tokens = parser.Tokenize(sourceInfo.Copy(Preprocess(sourceInfo.Markdown)));
            var internalRewriteEngine =
                new MarkdownRewriteEngine(
                    this,
                    MarkdownTokenRewriterFactory.Loop(
                        MarkdownTokenRewriterFactory.FromLambda <IMarkdownRewriteEngine, TwoPhaseBlockToken>(
                            (e, t) => t.Extract(parser)),
                        MaxExtractCount + 1));

            tokens = internalRewriteEngine.Rewrite(tokens);
            var idTable         = new Dictionary <string, int>();
            var idRewriteEngine = new MarkdownRewriteEngine(
                this,
                MarkdownTokenRewriterFactory.FromLambda <IMarkdownRewriteEngine, MarkdownHeadingBlockToken>(
                    (e, t) => t.RewriteId(idTable)));

            tokens = idRewriteEngine.Rewrite(tokens);
            tokens = RewriteEngine.Rewrite(tokens);
            var renderer = Renderer;

            foreach (var token in tokens)
            {
                result += renderer.Render(token);
            }
            return(result);
        }
예제 #2
0
        public StringBuffer Mark(string markdown, IMarkdownContext context)
        {
            var result = StringBuffer.Empty;
            var parser = Parser;

            if (context != null)
            {
                parser.SwitchContext(context);
            }
            var tokens = parser.Tokenize(Preprocess(markdown));
            var internalRewriteEngine =
                new MarkdownRewriteEngine(
                    this,
                    MarkdownTokenRewriterFactory.FromLambda <IMarkdownRewriteEngine, TwoPhaseBlockToken>(
                        (e, t) => t.Extract(parser)));

            tokens = internalRewriteEngine.Rewrite(tokens);
            tokens = RewriteEngine.Rewrite(tokens);
            var renderer = Renderer;

            foreach (var token in tokens)
            {
                result += renderer.Render(token);
            }
            return(result);
        }
예제 #3
0
        private Dictionary <string, Commit> rewrite(ISet <string> shasToRewrite, Filters filters)
        {
            Console.WriteLine("Rewriting...");
            var rewriter = new RewriteEngine(filters, repo, options.PruneEmpty, options.PruneMerges, options.PruneMergesAggr);

            var t = rewriter.Run(shasToRewrite);

            do
            {
                System.Threading.Thread.Sleep(1000);
                var progress = rewriter.Progress;
                Console.Write($"\r{new string(' ', Console.WindowWidth - 1)}\rDone: {progress.Done}/{rewriter.Total}   Loaded: {progress.Loaded}   Filtered: {progress.Filtered}   Parented: {progress.ParentFiltered}   Dropped: {progress.Dropped}   Saved: {progress.Saved}");
            }while (!t.IsCompleted);

            Console.WriteLine();
            Console.WriteLine("Done");

            return(t.Result);
        }
예제 #4
0
        public StringBuffer Mark(string markdown, IMarkdownContext context)
        {
            var result = StringBuffer.Empty;
            var parser = Parser;

            if (context != null)
            {
                parser.SwitchContext(context);
            }
            var tokens = parser.Tokenize(Preprocess(markdown));

            tokens = RewriteEngine.Rewrite(tokens);
            var renderer = Renderer;

            foreach (var token in tokens)
            {
                result += renderer.Render(token);
            }
            return(result);
        }