aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Vilcans <martin@librador.com>2023-11-28 22:10:41 +0100
committerMartin Vilcans <martin@librador.com>2023-11-28 22:11:57 +0100
commit46e353ee1f90b343b0827e3b65ece282103bcda5 (patch)
tree45ca1ed0fd818ae161f4e8035567b4a2952320cf
parent2a082dd0d89c65a8dc0cfefa99aa8df4ec773ea3 (diff)
downloadscreenplain-46e353ee1f90b343b0827e3b65ece282103bcda5.tar.gz
Add arguments --encoding and --encoding-errors
-rw-r--r--screenplain/main.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/screenplain/main.py b/screenplain/main.py
index b422a04..18d7863 100644
--- a/screenplain/main.py
+++ b/screenplain/main.py
@@ -66,12 +66,30 @@ def main(args):
'Bold and Underlined.'
)
)
+ parser.add_option(
+ '--encoding',
+ default='utf-8-sig',
+ help="Text encoding of the input file. " +
+ "Should be one of Python's built-in encodings."
+ )
+ parser.add_option(
+ '--encoding-errors',
+ default='strict',
+ choices=['strict', 'ignore', 'replace',
+ 'backslashreplace', 'surrogateescape'],
+ help='How to handle invalid character codes in the input file'
+ )
options, args = parser.parse_args(args)
if len(args) >= 3:
parser.error('Too many arguments')
input_file = (len(args) > 0 and args[0] != '-') and args[0] or None
output_file = (len(args) > 1 and args[1] != '-') and args[1] or None
+ try:
+ codecs.lookup(options.encoding)
+ except LookupError:
+ parser.error('Unknown encoding: %s' % options.encoding)
+
format = options.output_format
if format is None and output_file:
if output_file.endswith('.fdx'):
@@ -92,9 +110,13 @@ def main(args):
)
if input_file:
- input = codecs.open(input_file, 'r', 'utf-8-sig')
+ input = codecs.open(
+ input_file, 'r',
+ encoding=options.encoding,
+ errors=options.encoding_errors)
else:
- input = codecs.getreader('utf-8')(sys.stdin.buffer)
+ input = codecs.getreader(options.envoding)(sys.stdin.buffer)
+ input.errors = options.encoding_errors
screenplay = fountain.parse(input)
if format == 'pdf':