Exemple #1
0
        public void NonGreedyContentStopsMatchingWhenFollowingTokensMatch()
        {
            // It's likely we'll only be able to get one or two tokens into
            // the "following" list, since they effectively become "mandatory"
            var following = new[]
            {
                new SimplePatternElement(Matchers.LiteralText(" (")),
                new SimplePatternElement(Matchers.Identifier, "last"),
                new SimplePatternElement(Matchers.LiteralText(")"))
            };

            var pattern = new NameValueExtractor(new[]
            {
                new SimplePatternElement(Matchers.Identifier, "first"),
                new SimplePatternElement(Matchers.LiteralText(" ")),
                new SimplePatternElement(Matchers.NonGreedyContent(following), "content"),
            }.Concat(following));

            var frame = "abc def ghi (jkl)";

            var(properties, remainder) = pattern.ExtractValues(frame);
            Assert.Null(remainder);
            Assert.Equal("abc", properties["first"].ToString());
            Assert.Equal("def ghi", properties["content"].ToString());
            Assert.Equal("jkl", properties["last"].ToString());
        }
        public PlainTextLogEventReader(TextReader input, string extractionPattern)
        {
            if (extractionPattern == null)
            {
                throw new ArgumentNullException(nameof(extractionPattern));
            }
            _nameValueExtractor = ExtractionPatternInterpreter.CreateNameValueExtractor(ExtractionPatternParser.Parse(extractionPattern));

            _reader = new FrameReader(input, SpanEx.MatchedBy(_nameValueExtractor.StartMarker), TrailingLineArrivalDeadline);
        }
Exemple #3
0
        public void SingleLineContentMatchesUntilEol()
        {
            var pattern = new NameValueExtractor(new[]
            {
                new SimplePatternElement(Matchers.Identifier, "first"),
                new SimplePatternElement(Matchers.LiteralText(" ")),
                new SimplePatternElement(Matchers.SingleLineContent, "content"),
                new SimplePatternElement(Matchers.LiteralText(" (")),
                new SimplePatternElement(Matchers.Identifier, "last"),
                new SimplePatternElement(Matchers.LiteralText(")"))
            });

            var frame = "abc def ghi (jkl)";

            var(properties, remainder) = pattern.ExtractValues(frame);
            Assert.Null(remainder);
            Assert.Equal("abc", properties["first"].ToString());
            Assert.Equal("def ghi (jkl)", properties["content"].ToString());
        }