aboutsummaryrefslogtreecommitdiff
path: root/scripts/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-19 22:40:50 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-19 22:40:50 +0100
commit69e9cf714ff6710e6ad9a34f11f2a5f15f2de841 (patch)
treeb9f2c73c7c3ede12fd3c58208c03592396b396ef /scripts/mammoth
parent03110307662f75daa97a871b7e128715543ba306 (diff)
Use entry_points instead of scripts in setup.py
This improves support for script installation on Windows.
Diffstat (limited to 'scripts/mammoth')
-rw-r--r--scripts/mammoth116
1 files changed, 0 insertions, 116 deletions
diff --git a/scripts/mammoth b/scripts/mammoth
deleted file mode 100644
index 1194540..0000000
--- a/scripts/mammoth
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-import contextlib
-import sys
-import os
-import shutil
-
-import mammoth
-from mammoth import writers
-
-
-def main():
- args = _parse_args()
-
- if args.style_map is None:
- style_map = None
- else:
- with open(args.style_map) as style_map_fileobj:
- style_map = style_map_fileobj.read()
-
- with open(args.path, "rb") as docx_fileobj:
- if args.output_dir is None:
- convert_image = None
- output_path = args.output
- else:
- convert_image = mammoth.images.img_element(ImageWriter(args.output_dir))
- output_filename = "{0}.html".format(os.path.basename(args.path).rpartition(".")[0])
- output_path = os.path.join(args.output_dir, output_filename)
-
- result = mammoth.convert(
- docx_fileobj,
- style_map=style_map,
- convert_image=convert_image,
- output_format=args.output_format,
- )
- for message in result.messages:
- sys.stderr.write(message.message)
- sys.stderr.write("\n")
-
- with _open_output(output_path) as output:
- output.write(result.value)
-
-
-class ImageWriter(object):
- def __init__(self, output_dir):
- self._output_dir = output_dir
- self._image_number = 1
-
- def __call__(self, element):
- extension = element.content_type.partition("/")[2]
- image_filename = "{0}.{1}".format(self._image_number, extension)
- with open(os.path.join(self._output_dir, image_filename), "wb") as image_dest:
- with element.open() as image_source:
- shutil.copyfileobj(image_source, image_dest)
-
- self._image_number += 1
-
- return {"src": image_filename}
-
-
-@contextlib.contextmanager
-def _open_output(name):
- if name is None:
- try:
- yield Output(sys.stdout)
- finally:
- sys.stdout.flush()
- else:
- with open(name, "w") as output:
- yield Output(output)
-
-
-class Output(object):
- def __init__(self, fileobj):
- self._fileobj = fileobj
-
- def write(self, value):
- if sys.version_info[0] <= 2:
- self._fileobj.write(value.encode("utf8"))
- else:
- self._fileobj.write(value)
-
-
-
-def _parse_args():
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "path",
- metavar="docx-path",
- help="Path to the .docx file to convert.")
-
- output_group = parser.add_mutually_exclusive_group()
- output_group.add_argument(
- "output",
- nargs="?",
- metavar="output-path",
- help="Output path for the generated document. Images will be stored inline in the output document. Output is written to stdout if not set.")
- output_group.add_argument(
- "--output-dir",
- help="Output directory for generated HTML and images. Images will be stored in separate files. Mutually exclusive with output-path.")
-
- parser.add_argument(
- "--output-format",
- required=False,
- choices=writers.formats(),
- help="Output format.")
- parser.add_argument(
- "--style-map",
- required=False,
- help="File containg a style map.")
- return parser.parse_args()
-
-
-if __name__ == "__main__":
- main()