| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | from __future__ import absolute_import |
| | from __future__ import print_function |
| | from __future__ import unicode_literals |
| | import logging |
| | import os |
| |
|
| | from .plat import xsltproc |
| | from .plat import xmllint |
| | from .storage import ExtraItemStorage |
| | from .storage import open_storage_item |
| | from .storage.ole import OleStorage |
| | from .xmlmodel import Hwp5File |
| |
|
| |
|
| | def init_logger(args): |
| | logger = logging.getLogger('hwp5') |
| | try: |
| | from colorlog import ColoredFormatter |
| | except ImportError: |
| | formatter = None |
| | else: |
| | formatter = ColoredFormatter( |
| | '%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s', |
| | datefmt=None, reset=True, |
| | log_colors={ |
| | 'DEBUG': 'cyan', |
| | 'INFO': 'green', |
| | 'WARNING': 'yellow', |
| | 'ERROR': 'red', |
| | 'CRITICAL': 'red' |
| | } |
| | ) |
| |
|
| | loglevel = args.loglevel |
| | if not loglevel: |
| | loglevel = os.environ.get('PYHWP_LOGLEVEL') |
| | if loglevel: |
| | levels = dict(debug=logging.DEBUG, |
| | info=logging.INFO, |
| | warning=logging.WARNING, |
| | error=logging.ERROR, |
| | critical=logging.CRITICAL) |
| | loglevel = loglevel.lower() |
| | loglevel = levels.get(loglevel, logging.WARNING) |
| | logger.setLevel(loglevel) |
| |
|
| | logfile = args.logfile |
| | if not logfile: |
| | logfile = os.environ.get('PYHWP_LOGFILE') |
| | if logfile: |
| | handler = logging.FileHandler(logfile) |
| | else: |
| | handler = logging.StreamHandler() |
| | if formatter: |
| | handler.setFormatter(formatter) |
| | logger.addHandler(handler) |
| |
|
| |
|
| | def init_with_environ(): |
| | if 'PYHWP_XSLTPROC' in os.environ: |
| | xsltproc.executable = os.environ['PYHWP_XSLTPROC'] |
| | xsltproc.enable() |
| |
|
| | if 'PYHWP_XMLLINT' in os.environ: |
| | xmllint.executable = os.environ['PYHWP_XMLLINT'] |
| | xmllint.enable() |
| |
|
| |
|
| | def open_hwpfile(args): |
| | filename = args.hwp5file |
| | if args.ole: |
| | hwpfile = OleStorage(filename) |
| | else: |
| | hwpfile = Hwp5File(filename) |
| | if args.vstreams: |
| | hwpfile = ExtraItemStorage(hwpfile) |
| | return hwpfile |
| |
|
| |
|
| | def parse_recordstream_name(hwpfile, streamname): |
| | if streamname == 'docinfo': |
| | return hwpfile.docinfo |
| | segments = streamname.split('/') |
| | if len(segments) == 2: |
| | if segments[0] == 'bodytext': |
| | try: |
| | idx = int(segments[1]) |
| | return hwpfile.bodytext.section(idx) |
| | except ValueError: |
| | pass |
| | return open_storage_item(hwpfile, streamname) |
| |
|