• Lexical
Show / Hide Table of Contents
  • Lexical.FileSystem
    • Introduction
    • Abstractions
      • IFileSystem
        • IFileSystem
        • IFileSystemBrowse
        • IFileSystemCreateDirectory
        • IFileSystemDelete
        • IFileSystemFileAttribute
        • IFileSystemMount
        • IFileSystemMove
        • IFileSystemObserve
        • IFileSystemOpen
      • IEvent
      • IEntry
      • IOption
      • IToken
    • FileSystem
    • VirtualFileSystem
    • MemoryFileSystem
    • EmbeddedFileSystem
    • HttpFileSystem
    • Decoration
    • IFileProvider
    • Utility
      • DisposeList
      • FileScanner
      • VisitTree
      • File Operation
  • Lexical.FileProvider
    • Introduction
    • Package
    • Package.Abstractions
    • Root
    • Zip
    • Dll
    • SharpCompress
    • SharpZipLib
    • FileScanner
    • Utils
  • Lexical.Localization
    • Introduction
    • Tutorial
    • Asset
      • IAsset
      • IStringAsset
    • Line
      • ILine
      • ILineFactory
      • ILineRoot
      • ILineFormat
      • ILineLogger
      • LineComparer
    • File
      • ILineReader
      • ILineWriter
      • Ini
      • Json
      • Xml
      • Resx
      • Resources
    • Miscellaneous
      • Plurality
      • ICulturePolicy
      • IStringFormat
      • Dependency Injection
    • Practices
      • Class Library
      • Class Library DI
      • Class Library DI opt.
  • Lexical.Utilities
    • Introduction
    • UnicodeString
    • FileScanner
    • Permutation
    • Tuples
    • StructList

ILineQualifier

ILineQualifier is an for measuring qualities of ILines.
/// <summary>
/// Measures qualities of <see cref="ILine"/>s and <see cref="ILineParameter"/>.
/// </summary>
public interface ILineQualifier
{
}

/// <summary>
/// Tests whether a <see cref="ILine"/> matches a qualification criteria.
/// </summary>
public interface ILineQualifierEvaluatable : ILineQualifier
{
    /// <summary>
    /// Qualify <paramref name="line"/> against the criteria.
    /// </summary>
    /// <param name="line"></param>
    /// <returns>true if line is qualified, false if disqualified</returns>
    bool Qualify(ILine line);
}

/// <summary>
/// Tests whether a <see cref="ILine"/> matches a criteria.
/// </summary>
public interface ILineQualifierLinesEvaluatable : ILineQualifier
{
    /// <summary>
    /// Qualifies lines. 
    /// </summary>
    /// <param name="lines"></param>
    /// <returns>all lines that were qualified</returns>
    IEnumerable<ILine> Qualify(IEnumerable<ILine> lines);
}

/// <summary>
/// Measures qualifications of <see cref="ILineArgument"/>.
/// </summary>
public interface ILineArgumentQualifier : ILineQualifier
{
    /// <summary>
    /// Policy whether occuranceIndex needs to be supplied when providing <see cref="ILineParameter"/>, <see cref="ILineHint"/>, <see cref="ILineCanonicalKey"/>, <see cref="ILineNonCanonicalKey"/> arguments.
    /// 
    /// If true, <see cref="QualifyArgument(ILineArgument, int)"/> caller must supply occurance index.
    /// If false, caller can use -1 for unspecified.
    /// 
    /// Occurance describes the position of parameter of same parameter name.
    /// For example, "Section:A:Section:B:Section:C" has parameter "Section" with three 
    /// occurance indices: 0, 1, 2.
    /// </summary>
    bool NeedsOccuranceIndex { get; }

    /// <summary>
    /// Qualify <paramref name="argument"/>.
    /// </summary>
    /// <param name="argument">argument</param>
    /// <param name="occuranceIndex">Occurance index of the parameterName. 0-first, 1-second, etc. Use -1 if occurance is unspecified</param>
    /// <returns>true if parameter is qualified, false if disqualified</returns>
    bool QualifyArgument(ILineArgument argument, int occuranceIndex = -1);
}

/// <summary>
/// Qualifier that can enumerate component qualifiers.
/// </summary>
public interface ILineQualifierEnumerable : ILineQualifier, IEnumerable<ILineQualifier>
{
}

/// <summary>
/// Composition of line qualifiers.
/// </summary>
public interface ILineQualifierComposition : ILineQualifier
{
    /// <summary>
    /// Is collection in read-only state.
    /// </summary>
    bool ReadOnly { get; set; }

    /// <summary>
    /// Add rule that is validated against complete <see cref="ILine"/>.
    /// </summary>
    /// <param name="qualifierRule"></param>
    void Add(ILineQualifier qualifierRule);
}


Back to top Copyright © 2015-2020 Toni Kalajainen