From 05fa223a34ae3799191cd7ad1b46ed559cb37240 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Wed, 28 Feb 2018 12:13:04 +0100 Subject: [PATCH] bin/idna-xlate und pp_lib/idna_xlate.py dazu --- bin/idna-xlate | 42 +++++++++++++++++ pp_lib/idna_xlate.py | 105 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 bin/idna-xlate create mode 100644 pp_lib/idna_xlate.py diff --git a/bin/idna-xlate b/bin/idna-xlate new file mode 100755 index 0000000..374b882 --- /dev/null +++ b/bin/idna-xlate @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +# Standard modules +import sys +import os +import logging +import locale + +# own modules: +cur_dir = os.getcwd() +base_dir = cur_dir + +if sys.argv[0] != '' and sys.argv[0] != '-c': + bin_dir = os.path.dirname(os.path.realpath(sys.argv[0])) +else: + bin_dir = os.path.dirname(os.path.realpath(__file__)) +base_dir = os.path.abspath(os.path.join(bin_dir, '..')) +module_dir = os.path.join(base_dir, 'pp_lib') +if os.path.exists(module_dir): + sys.path.insert(0, base_dir) + +from pp_lib.idna_xlate import IdnaXlateApp + +log = logging.getLogger(__name__) + +__author__ = 'Frank Brehm ' +__copyright__ = '(C) 2018 by Frank Brehm, Pixelpark GmbH, Berlin' + +appname = os.path.basename(sys.argv[0]) + +locale.setlocale(locale.LC_ALL, '') + +app = IdnaXlateApp(appname=appname) + +if app.verbose > 2: + print("{c}-Object:\n{a}".format(c=app.__class__.__name__, a=app)) + +app() + +sys.exit(0) + +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 diff --git a/pp_lib/idna_xlate.py b/pp_lib/idna_xlate.py new file mode 100644 index 0000000..d75da15 --- /dev/null +++ b/pp_lib/idna_xlate.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +@author: Frank Brehm +@contact: frank.brehm@pixelpark.com +@copyright: © 2018 by Frank Brehm, Berlin +@summary: The module for the 'idna-xlate' application object. +""" +from __future__ import absolute_import + +# Standard modules +import logging +import textwrap +import sys +import copy + +# Third party modules +import six + +# Own modules +from .common import pp, to_str, to_bytes + +from .app import PpApplication + +try: + from .local_version import __version__ as my_version +except ImportError: + from .global_version import __version__ as my_version + +__version__ = '0.1.0' +LOG = logging.getLogger(__name__) + + +# ============================================================================= +class IdnaXlateApp(PpApplication): + """ + Application class for the idna-xlate command. + """ + + # ------------------------------------------------------------------------- + def __init__( + self, appname=None, verbose=0, version=my_version, *arg, **kwargs): + + self.items = [] + + indent = ' ' * self.usage_term_len + + usage = textwrap.dedent("""\ + %(prog)s [--color [{{yes,no,auto}}]] [-v | -q] ITEM [ITEM ...] + + {i}%(prog)s --usage + {i}%(prog)s -h|--help + {i}%(prog)s -V|--version + """).strip().format(i=indent) + + desc = "Formats the given items into IDNA formatted strings (Punycode)." + + super(IdnaXlateApp, self).__init__( + usage=usage, + description=desc, + verbose=verbose, + version=version, + *arg, **kwargs + ) + + self.post_init() + + self.initialized = True + + # ------------------------------------------------------------------------- + def init_arg_parser(self): + """ + Method to initiate the argument parser. + """ + + super(IdnaXlateApp, self).init_arg_parser() + + + self.arg_parser.add_argument( + 'items', + metavar='ITEM', type=str, nargs='+', + help=( + 'The item to translate into IDNA encoded strings.'), + ) + + # ------------------------------------------------------------------------- + def _run(self): + """The underlaying startpoint of the application.""" + + if self.verbose: + print("Items to translate:\n") + + for item in self.args.items: + + print(" * {i!r}:".format(i=item)) + +# ============================================================================= + +if __name__ == "__main__": + + pass + +# ============================================================================= + +# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list -- 2.39.5