#!/usr/bin/python
# -*- coding: utf-8 -*-

from __future__ import print_function, unicode_literals

# TODO Deal with tabs and unicode in input files

import sys
import zlib

if len(sys.argv) < 2:
    print("Usage: {} <input file>".format(sys.argv[0]), file=sys.stderr)
    sys.exit(2)

try:
    with open(sys.argv[1], "r") as infh:
        lines = infh.read().split("\n")
except UnicodeDecodeError:
    print("This file is not plain ASCII; please encode it first", file=sys.stderr)
    sys.exit(1)

maxlen = max(*[len(l) for l in lines])

for line in lines:
    cksum = zlib.crc32(line.encode("utf-8")) & 0xFFFFFFFF
    # ^ the "&" is to make it unsigned
    if line.endswith(" "):
        line = line + "\u00b6"  # paragraph sign
    print("{0:<{1}} | {2:08x}".format(line, maxlen + 1, cksum))
