コード例 #1
0
            public void RestoresPreviousIndentLevelOnDisposalWithSpecifiedAmount()
            {
                // Given
                StringBuilder builder  = new StringBuilder();
                OutputFile    output   = new OutputFileWriter(new StringWriter(builder));
                string        expected = @"A
    B
C
    D
E
";

                // When
                output.WriteLine("A");
                using (output.WithIndent())
                {
                    output.WriteLine("B");
                    using (output.WithIndent(0))
                    {
                        output.WriteLine("C");
                    }
                    output.WriteLine("D");
                }
                output.WriteLine("E");

                // Then
                Assert.AreEqual(expected, builder.ToString());
            }
コード例 #2
0
            public void SetsToSpecifiedIndentLevel()
            {
                // Given
                StringBuilder builder = new StringBuilder();
                OutputFile    output  = new OutputFileWriter(new StringWriter(builder));

                // When
                output.IndentLevel = 3;

                // Then
                Assert.AreEqual(3, output.IndentLevel);
            }
コード例 #3
0
            public void ReturnsPreviousIndentLevelWhenSettingToSpecifiedIndentLevel()
            {
                // Given
                StringBuilder builder = new StringBuilder();
                OutputFile    output  = new OutputFileWriter(new StringWriter(builder));

                // When
                output.IndentLevel = 3;
                int previousIndentLevel = output.Indent(2);

                // Then
                Assert.AreEqual(3, previousIndentLevel);
            }
コード例 #4
0
            public void IncrementsIndentLevel()
            {
                // Given
                StringBuilder builder = new StringBuilder();
                OutputFile    output  = new OutputFileWriter(new StringWriter(builder));

                // When
                output.IndentLevel = 3;
                output.Indent();

                // Then
                Assert.AreEqual(4, output.IndentLevel);
            }
コード例 #5
0
        public ExtractionResponse RunExtraction()
        {
            List <InputFileItem> inputItemCollection;
            var fileReader = new InputFileReader(_csvDelimiter);

            try
            {
                inputItemCollection = fileReader.GetInputItemCollection(Request.InputFilePath);
            }
            catch (Exception ex)
            {
                Response.GeneralException = ex.GetInnerMostException();
                return(Response);
            }

            var successCnt       = 0;
            var markupAggregator = new MarkupAggregator(
                HttpAgent, VerboseLogger, _hrefRegex, _invalidSiteLinkPatterns);
            var emailExtractor = new EmailExtractor(_emailRegex);
            var fileWriter     = new OutputFileWriter(_csvDelimiter, Request.OutputDirectory);

            foreach (var inputItem in inputItemCollection)
            {
                VerboseLogger.Log($"Extracting from {inputItem.SiteUrl} url...");

                try
                {
                    ProcessInputFileItem(inputItem, markupAggregator, emailExtractor, fileWriter);

                    VerboseLogger.Log($"Extraction completed for {inputItem.SiteUrl} url...");

                    successCnt++;
                }
                catch (Exception ex)
                {
                    var eEx = new ExtractionException("", ex)
                    {
                        InputUrl = inputItem.SiteUrl
                    };

                    VerboseLogger.Log("Extraction failed. Moving to next url...");

                    Response.ExtractionExceptions = Response.ExtractionExceptions ?? new List <ExtractionException>();
                    Response.ExtractionExceptions.Add(eEx);
                }
            }

            Response.SuccessfulExtractions = successCnt;

            return(Response);
        }
コード例 #6
0
        private void ProcessInputFileItem(InputFileItem inputItem, MarkupAggregator markupAggregator,
                                          EmailExtractor emailExtractor, OutputFileWriter fileWriter)
        {
            var aggregatedSiteMarkup = markupAggregator.AggregateMarkupFromRootUrl(inputItem.SiteUrl);

            VerboseLogger.Log($"...collected #{aggregatedSiteMarkup.Count} unique pages");

            var extractResult = emailExtractor.ExtractEmailsFromMarkup(inputItem.SiteUrl, aggregatedSiteMarkup);

            VerboseLogger.Log($"...identified #{extractResult.Emails.Count} unique emails " +
                              $"and has mailto tag = {extractResult.HasMailto}");

            fileWriter.WriteExtractResult(extractResult);
        }
コード例 #7
0
            public void DoesNotWriteIfNoIndentLevel()
            {
                // Given
                StringBuilder builder = new StringBuilder();
                OutputFile    output  = new OutputFileWriter(new StringWriter(builder));

                // When
                output.IndentString = "..";
                output.IndentLevel  = 0;
                output.WriteIndent();

                // Then
                Assert.AreEqual(string.Empty, builder.ToString());
            }
コード例 #8
0
            public void WritesTheCurrentIndentStringMultipleTimes()
            {
                // Given
                StringBuilder builder  = new StringBuilder();
                OutputFile    output   = new OutputFileWriter(new StringWriter(builder));
                string        expected = @"....";

                // When
                output.IndentString = "..";
                output.IndentLevel  = 2;
                output.WriteIndent();

                // Then
                Assert.AreEqual(expected, builder.ToString());
            }
コード例 #9
0
            public void IndentsUntilDisposal()
            {
                // Given
                StringBuilder builder  = new StringBuilder();
                OutputFile    output   = new OutputFileWriter(new StringWriter(builder));
                string        expected = @"A
    B
C
";

                // When
                output.WriteLine("A");
                using (output.WithIndent())
                {
                    output.WriteLine("B");
                }
                output.WriteLine("C");

                // Then
                Assert.AreEqual(expected, builder.ToString());
            }
コード例 #10
0
            public void DoesNotResetIndentWriteFlag()
            {
                // Given
                StringBuilder builder  = new StringBuilder();
                OutputFile    output   = new OutputFileWriter(new StringWriter(builder));
                string        expected = @"A
....B
C
";

                // When
                output.IndentString = "..";
                output.WriteLine("A");
                using (output.WithIndent())
                {
                    output.WriteIndent();
                    output.WriteLine("B");
                }
                output.WriteLine("C");

                // Then
                Assert.AreEqual(expected, builder.ToString());
            }