| File: Internal\PatternContexts\PatternContextLinearInclude.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.FileSystemGlobbing\src\Microsoft.Extensions.FileSystemGlobbing.csproj (Microsoft.Extensions.FileSystemGlobbing) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using Microsoft.Extensions.FileSystemGlobbing.Abstractions; namespace Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts { public class PatternContextLinearInclude : PatternContextLinear { public PatternContextLinearInclude(ILinearPattern pattern) : base(pattern) { } public override void Declare(Action<IPathSegment, bool> onDeclare) { if (IsStackEmpty()) { throw new InvalidOperationException(SR.CannotDeclarePathSegment); } if (Frame.IsNotApplicable) { return; } if (Frame.SegmentIndex < Pattern.Segments.Count) { onDeclare(Pattern.Segments[Frame.SegmentIndex], IsLastSegment()); } } public override bool Test(DirectoryInfoBase directory) { if (IsStackEmpty()) { throw new InvalidOperationException(SR.CannotTestDirectory); } if (Frame.IsNotApplicable) { return false; } return !IsLastSegment() && TestMatchingSegment(directory.Name); } } }