48 lines
1.2 KiB
Python
Executable File
48 lines
1.2 KiB
Python
Executable File
#! /usr/bin/env python3
|
|
|
|
import argparse
|
|
import sys
|
|
import re
|
|
|
|
|
|
def main() -> int:
|
|
# Handle program arguments
|
|
ap = argparse.ArgumentParser(prog="lyrics2ptr")
|
|
ap.add_argument("text_file", help="Text file containing lyrics")
|
|
ap.add_argument(
|
|
"--addr-prefix",
|
|
help="Optional prefix for the generated address byte",
|
|
default="",
|
|
)
|
|
ap.add_argument(
|
|
"--addr-suffix",
|
|
help="Optional suffix for the generated address byte",
|
|
default="",
|
|
)
|
|
args = ap.parse_args()
|
|
|
|
# Open text file
|
|
with open(args.text_file, "r") as f:
|
|
text = f.read()
|
|
|
|
# Convert text to pointer record hostnames
|
|
for i, line in enumerate(text.splitlines()):
|
|
|
|
# Strip bracketed text
|
|
matches = re.findall(r"(.*)\(|(.*)", line)
|
|
if not matches:
|
|
continue
|
|
line_clean = matches[0][0] if matches[0][0] else matches[0][1]
|
|
|
|
line_clean = (
|
|
line_clean.lower().replace(" ", ".").replace("'", "").replace(",", "")
|
|
)
|
|
addr = "{:04x}".format(i)
|
|
print(f"{args.addr_prefix}{addr}{args.addr_suffix} {line_clean}")
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|