Newer
Older
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import sys
from typing import List
from .meters import ALL_METERS
from .scanner import Scanner
def scan(plain_verses: List[str], meters=ALL_METERS, **options) -> List[Verse]:
scanner = Scanner()
scanned_verses = scanner.scan_verses(plain_verses)
def parse_args() -> argparse.Namespace:
"""Parse arguments from the commandline.
:return: An argparse Namespace holding the arguments.
"""
d = 'Scan Latin verses.'
parser = argparse.ArgumentParser(prog='allzweckmesser', description=d)
parser.add_argument('--infile', help=('A file containing the verses that'
' are to be scanned.'))
parser.add_argument('--meters', '-m', nargs='+', help=('The considered'
' meters.'))
def get_plain_verses(infile: str = None) -> List[str]:
If infile is None the verses are read from the standard input.
:params infile: A file containing one verse per line.
:return: A list of the verses.
"""
if infile:
with open(infile) as f:
plain_verses = [line.strip() for line in f.readlines()]
plain_verses = [line.strip() for line in sys.stdin.readlines()]
return plain_verses
def main():
"""Parse CLI arguments then read and scan verses."""
args = vars(parse_args())
args['plain_verses'] = get_plain_verses(args['infile'])
scanned_verses = scan(**args)
for v in scanned_verses:
print(v)