Source code for vcorelib.args.newline

"""
A module for adding newline-related arguments to an argument parser.
"""

# built-in
from argparse import ArgumentParser
from enum import Enum
from os import linesep


[docs] class LineEnding(str, Enum): """An enumeration for line-ending options.""" UNIX = "\n" DOS = "\r\n" PLATFORM = linesep def __str__(self) -> str: """Get this enum as a string.""" result = "platform" if self is LineEnding.UNIX: result = "unix" if self is LineEnding.DOS: result = "dos" return result
[docs] @staticmethod def from_arg(opt: str) -> "LineEnding": """Convert a string option to an instance of this enum.""" opt = opt.lower() if opt == "unix": return LineEnding.UNIX if opt == "dos": return LineEnding.DOS return LineEnding.PLATFORM
[docs] def add_newline_arg(parser: ArgumentParser) -> None: """Add a line-ending argument to an argument parser.""" choices = [LineEnding.UNIX, LineEnding.DOS, LineEnding.PLATFORM] parser.add_argument( "--line-ending", type=LineEnding.from_arg, default="unix", choices=choices, help="line-ending option to use by default (default: '%(default)s')", )