| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | from __future__ import absolute_import |
| | from __future__ import print_function |
| | from __future__ import unicode_literals |
| | from argparse import ArgumentParser |
| | from contextlib import closing |
| | import gettext |
| | import logging |
| | import os.path |
| | import sys |
| |
|
| | from . import __version__ as version |
| | from .cli import init_logger |
| | from .dataio import ParseError |
| | from .errors import InvalidHwp5FileError |
| | from .utils import make_open_dest_file |
| | from .utils import cached_property |
| | from .transforms import BaseTransform |
| | from .xmlmodel import Hwp5File |
| |
|
| |
|
| | PY3 = sys.version_info.major == 3 |
| | logger = logging.getLogger(__name__) |
| | locale_dir = os.path.join(os.path.dirname(__file__), 'locale') |
| | locale_dir = os.path.abspath(locale_dir) |
| | t = gettext.translation('hwp5txt', locale_dir, fallback=True) |
| | _ = t.gettext |
| |
|
| |
|
| | RESOURCE_PATH_XSL_TEXT = 'xsl/plaintext.xsl' |
| |
|
| |
|
| | class TextTransform(BaseTransform): |
| |
|
| | @property |
| | def transform_hwp5_to_text(self): |
| | transform_xhwp5 = self.transform_xhwp5_to_text |
| | return self.make_transform_hwp5(transform_xhwp5) |
| |
|
| | @cached_property |
| | def transform_xhwp5_to_text(self): |
| | ''' |
| | >>> T.transform_xhwp5_to_css('hwp5.xml', 'styles.css') |
| | ''' |
| | resource_path = RESOURCE_PATH_XSL_TEXT |
| | return self.make_xsl_transform(resource_path) |
| |
|
| |
|
| | def main(): |
| | argparser = main_argparser() |
| | args = argparser.parse_args() |
| | init_logger(args) |
| |
|
| | hwp5path = args.hwp5file |
| |
|
| | text_transform = TextTransform() |
| |
|
| | open_dest = make_open_dest_file(args.output) |
| | transform = text_transform.transform_hwp5_to_text |
| |
|
| | try: |
| | with closing(Hwp5File(hwp5path)) as hwp5file: |
| | with open_dest() as dest: |
| | transform(hwp5file, dest) |
| | except ParseError as e: |
| | e.print_to_logger(logger) |
| | except InvalidHwp5FileError as e: |
| | logger.error('%s', e) |
| | sys.exit(1) |
| |
|
| |
|
| | def main_argparser(): |
| | parser = ArgumentParser( |
| | prog='hwp5txt', |
| | description=_('HWPv5 to txt converter'), |
| | ) |
| | parser.add_argument( |
| | '--version', |
| | action='version', |
| | version='%(prog)s {}'.format(version) |
| | ) |
| | parser.add_argument( |
| | '--loglevel', |
| | help=_('Set log level.'), |
| | ) |
| | parser.add_argument( |
| | '--logfile', |
| | help=_('Set log file.'), |
| | ) |
| | parser.add_argument( |
| | '--output', |
| | help=_('Output file'), |
| | ) |
| | parser.add_argument( |
| | 'hwp5file', |
| | metavar='<hwp5file>', |
| | help=_('.hwp file to convert'), |
| | ) |
| | return parser |
| |
|