namespace Unosquare.Swan.Components
{
using System;
///
/// Provides settings for .
/// Based on CommandLine (Copyright 2005-2015 Giacomo Stelluti Scala and Contributors.).
///
public class ArgumentParserSettings
{
///
/// Gets or sets a value indicating whether [write banner].
///
///
/// true if [write banner]; otherwise, false.
///
public bool WriteBanner { get; set; } = true;
///
/// Gets or sets a value indicating whether perform case sensitive comparisons.
/// Note that case insensitivity only applies to parameters, not the values
/// assigned to them (for example, enum parsing).
///
///
/// true if [case sensitive]; otherwise, false.
///
public bool CaseSensitive { get; set; } = false;
///
/// Gets or sets a value indicating whether perform case sensitive comparisons of values.
/// Note that case insensitivity only applies to values, not the parameters.
///
///
/// true if [case insensitive enum values]; otherwise, false.
///
public bool CaseInsensitiveEnumValues { get; set; } = true;
///
/// Gets or sets a value indicating whether the parser shall move on to the next argument and ignore the given argument if it
/// encounter an unknown arguments.
///
///
/// true to allow parsing the arguments with different class options that do not have all the arguments.
///
///
/// This allows fragmented version class parsing, useful for project with add-on where add-ons also requires command line arguments but
/// when these are unknown by the main program at build time.
///
public bool IgnoreUnknownArguments { get; set; } = true;
internal StringComparison NameComparer => CaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
}
}