Ejemplo n.º 1
0
def main(args):

    from hwp5.dataio import ParseError

    filenames = filenames_from_args(args)

    conditions = list(conditions_from_args(args))
    conditions_match = lambda m: all(condition(m) for condition in conditions)
    filter_conditions = partial(ifilter, conditions_match)

    print_model = printer_from_args(args)

    for filename in filenames:
        try:
            models = hwp5file_models(filename)
            models = filter_conditions(models)
            for model in models:
                print_model(model)
        except ParseError, e:
            from hwp5.proc import logger
            logger.error('---- On processing %s:', filename)
            e.print_to_logger(logger)
Ejemplo n.º 2
0
Archivo: find.py Proyecto: yarang/pyhwp
def main(args):

    from hwp5.dataio import ParseError

    filenames = filenames_from_args(args)

    conditions = list(conditions_from_args(args))
    conditions_match = lambda m: all(condition(m) for condition in conditions)
    filter_conditions = partial(ifilter, conditions_match)

    print_model = printer_from_args(args)

    for filename in filenames:
        try:
            models = hwp5file_models(filename)
            models = filter_conditions(models)
            for model in models:
                print_model(model)
        except ParseError, e:
            from hwp5.proc import logger
            logger.error('---- On processing %s:', filename)
            e.print_to_logger(logger)
Ejemplo n.º 3
0
def main(args):
    filenames = args['<hwp5files>']
    from hwp5.dataio import ParseError
    from hwp5.binmodel import Hwp5File

    conditions = []
    if args['--model']:
        def with_model_name(model):
            return args['--model'] == model['type'].__name__
        conditions.append(with_model_name)

    if args['--tag']:
        tag = args['--tag']
        try:
            tag = int(tag)
        except ValueError:
            pass
        else:
            from hwp5.tagids import tagnames
            tag = tagnames[tag]

        def with_tag(model):
            return model['tagname'] == tag
        conditions.append(with_tag)

    if args['--incomplete']:
        def with_incomplete(model):
            return 'unparsed' in model
        conditions.append(with_incomplete)

    def flat_models(hwp5file, **kwargs):
        for model in hwp5file.docinfo.models(**kwargs):
            model['stream'] = 'DocInfo'
            yield model

        for section in hwp5file.bodytext:
            for model in hwp5file.bodytext[section].models(**kwargs):
                model['stream'] = 'BodyText/'+section
                yield model

    for filename in filenames:
        try:
            hwp5file = Hwp5File(filename)

            def with_filename(models):
                for model in models:
                    model['filename'] = filename
                    yield model

            models = flat_models(hwp5file)
            models = with_filename(models)

            for model in models:
                if all(condition(model) for condition in conditions):
                    print '%s:%s(%s): %s' % (model['filename'],
                                             model['stream'],
                                             model['seqno'],
                                             model['type'].__name__)
                    if args['--dump']:
                        from hwp5.binmodel import model_to_json
                        print model_to_json(model, sort_keys=True, indent=2)
                        def print_log(fmt, *args):
                            print fmt % args
                        from hwp5.bintype import log_events
                        list(log_events(model['binevents'], print_log))
        except ParseError, e:
            from hwp5.proc import logger
            logger.error('---- On processing %s:', filename)
            e.print_to_logger(logger)