Welcome to mirror list, hosted at ThFree Co, Russian Federation.

PatternMatcherFactory.cs « PatternMatching « Impl « Text « src - github.com/microsoft/vs-editor-api.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ccf1625814998e4077606cc1662b1c567382dc61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.ComponentModel.Composition;
using System.Linq;
using static Microsoft.VisualStudio.Text.PatternMatching.PatternMatcherCreationFlags;

namespace Microsoft.VisualStudio.Text.PatternMatching.Implementation
{
    [Export(typeof(IPatternMatcherFactory))]
    internal class PatternMatcherFactory : IPatternMatcherFactory
    {
        public IPatternMatcher CreatePatternMatcher(string pattern, PatternMatcherCreationOptions creationOptions)
        {
            if (string.IsNullOrWhiteSpace(pattern))
            {
                throw new ArgumentException("A non-empty pattern is required to create a pattern matcher", nameof(pattern));
            }

            if (creationOptions == null)
            {
                throw new ArgumentNullException(nameof(creationOptions));
            }

            if (creationOptions.ContainerSplitCharacters == null)
            {
                return PatternMatcher.CreateSimplePatternMatcher(
                    pattern,
                    creationOptions.CultureInfo,
                    creationOptions.Flags.HasFlag(IncludeMatchedSpans),
                    creationOptions.Flags.HasFlag(AllowFuzzyMatching),
                    creationOptions.Flags.HasFlag(AllowSimpleSubstringMatching));
            }
            else
            {
                return PatternMatcher.CreateContainerPatternMatcher(
                    pattern.Split(creationOptions.ContainerSplitCharacters.ToArray()),
                    creationOptions.ContainerSplitCharacters,
                    creationOptions.CultureInfo,
                    creationOptions.Flags.HasFlag(AllowFuzzyMatching),
                    creationOptions.Flags.HasFlag(AllowSimpleSubstringMatching),
                    creationOptions.Flags.HasFlag(IncludeMatchedSpans));
            }
        }
    }
}