bin/boxify @ 3def90ae0b3a

More
author Steve Losh <steve@stevelosh.com>
date Tue, 09 Jan 2024 10:44:08 -0500
parents 5390fa62ede7
children (none)
#!/usr/bin/env python3

import sys

lines = sys.stdin.readlines()

def ch(row, col):
    if row < 0 or row >= len(lines):
        return None
    line = lines[row]
    if col < 0 or col >= len(line):
        return None
    return line[col]

for row, line in enumerate(lines):
    for col, char in enumerate(line):
        c = char
        if char == '-':
            c = '—'
        elif char == '|':
            c = '│'
        elif char == '+':
            u = ch(row-1, col) == '|'
            d = ch(row+1, col) == '|'
            l = ch(row, col-1) == '-'
            r = ch(row, col+1) == '-'
            if u and d and l and r: c = '┼'
            elif u and d and l and not r: c = '┤'
            elif u and d and not l and r: c = '├'
            elif u and not d and l and r: c = '┴'
            elif not u and d and l and r: c = '┬'
            elif u and r: c = '└'
            elif u and l: c = '┘'
            elif d and l: c = '┐'
            elif d and r: c = '┌'
            elif u and d: c = '│'
            elif l and r: c = '─'
            else:
                print(u, d, l, r,)
                assert False

        sys.stdout.write(c)