Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 29 additions & 43 deletions tools/zos/sdwrap.py
Original file line number Diff line number Diff line change
@@ -1,82 +1,68 @@
#!/usr/bin/env python
#!/usr/bin/env python3

import argparse
import sys

def wrap(args):
l = args.input.readline(72)
firstline = True
while l:
if l[-1] == '\n':
while (line := args.input.read(72)):
if line.endswith('\n'):
if firstline:
outstr = "{}".format(l)
outstr = f"{line}"
else:
outstr = " {}".format(l)
outstr = f" {line}"
firstline = True
l = args.input.readline(72)
else:
if firstline:
outstr = "{:<71}*\n".format(l[:-1])
outstr = f"{line:<71}*\n"
firstline = False
else:
outstr = " {:<70}*\n".format(l[:-1])
l = l[-1] + args.input.readline(70)
outstr = f" {line:<70}*\n"
line = line[-1] + args.input.read(70)
args.output.write(outstr)

return 0

def unwrap(args):
l = args.input.readline()
firstline = True
while l:
if len(l) > 80:
for line in args.input:
if len(line) > 80:
print("Error: input line invalid (longer than 80 characters)", file=sys.stderr)
return 1
if not firstline and l[0] != ' ':
print("Error: continuation line not start with blank", file=sys.stderr)
if not firstline and line[0] != ' ':
print("Error: continuation line does not start with a blank", file=sys.stderr)
return 1

if len(l) > 71 and l[71] == '*':
if len(line) > 71 and line[71] == '*':
if firstline:
args.output.write(l[:71])
args.output.write(line[:71])
firstline = False
else:
args.output.write(l[1:71])
args.output.write(line[1:71])
else:
if firstline:
args.output.write(l)
args.output.write(line)
else:
args.output.write(l[1:])
args.output.write(line[1:])
firstline = True
l = args.input.readline()
return 0

def Main():
def main():
parser = argparse.ArgumentParser(description="Wrap sidedeck source to card formats")
parser.add_argument("-u", "--unwrap",
help="Unwrap sidedeck cards to source formats instead", action="store_true",
default=False)
parser.add_argument("-i", "--input", help="input filename, default to stdin",
action="store", default=None)
parser.add_argument("-o", "--output", help="output filename, default to stdout",
action="store", default=None)
parser.add_argument("-u", "--unwrap", help="Unwrap sidedeck cards to source formats instead", action="store_true")
parser.add_argument("-i", "--input", help="Input filename, defaults to stdin", default=None)
parser.add_argument("-o", "--output", help="Output filename, defaults to stdout", default=None)

args = parser.parse_args()

if args.input is None:
args.input = sys.stdin
else:
args.input = open(args.input, 'r')

if args.output is None:
args.output = sys.stdout
else:
args.output = open(args.output, 'w')
with open(args.input, 'r') if args.input else sys.stdin as infile, \
open(args.output, 'w') if args.output else sys.stdout as outfile:

if args.unwrap:
return unwrap(args)
args.input = infile
args.output = outfile

return wrap(args)
if args.unwrap:
return unwrap(args)
return wrap(args)

if __name__ == '__main__':
sys.exit(Main())
sys.exit(main())