Beispiel #1
0
        private IProducerConsumer CreateChain(ConverterInput input, ConverterOutput output, IProgressMonitor progressMonitor)
        {
            locked = true;

            HtmlInjection injection = null;

            if (injectHead != null || injectTail != null)
            {
                injection = new HtmlInjection(
                    injectHead,
                    injectTail,
                    injectionFormat,
                    filterHtml,
                    htmlCallback,
                    testBoundaryConditions,
                    null,
                    progressMonitor);



                normalizeInputHtml = true;
            }

            if (filterHtml || outputFragment || htmlCallback != null)
            {
                normalizeInputHtml = true;
            }

            IHtmlParser parser;

            if (normalizeInputHtml)
            {
                var preParser = new HtmlParser(
                    input,
                    detectEncodingFromMetaTag,
                    false,
                    testMaxTokenRuns,
                    testMaxHtmlTagAttributes,
                    testBoundaryConditions);

                parser = new HtmlNormalizingParser(
                    preParser,
                    injection,
                    htmlCallback != null,
                    testMaxHtmlNormalizerNesting,
                    testBoundaryConditions,
                    testNormalizerTraceStream,
                    testNormalizerTraceShowTokenNum,
                    testNormalizerTraceStopOnTokenNum);
            }
            else
            {
                parser = new HtmlParser(
                    input,
                    detectEncodingFromMetaTag,
                    false,
                    testMaxTokenRuns,
                    testMaxHtmlTagAttributes,
                    testBoundaryConditions);
            }

            var writer = new HtmlWriter(
                output,
                filterHtml,
                normalizeInputHtml && !testNoNewLines);

            return(new HtmlToHtmlConverter(
                       parser,
                       writer,
                       testConvertFragment,
                       outputFragment,
                       filterHtml,
                       htmlCallback,
                       testTruncateForCallback,
                       injection != null && injection.HaveTail,
                       testTraceStream,
                       testTraceShowTokenNum,
                       testTraceStopOnTokenNum,
                       smallCssBlockThreshold,
                       preserveDisplayNoneStyle,
                       progressMonitor));
        }