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));
}
}
}
}
|