Exemple #1
0
 def _gen (self, ets) :
     def _sk (x) :
         k, _ = x
         return - len (k), k ### longest first, deterministic
     for k, v in sorted (pyk.iteritems (ets), key = _sk) :
         head = k.split ("/") [0] if "/" in k else ""
         yield Regexp \
             ("%s\[(?!%s\])" % (re.escape (head), re.escape (v)))
Exemple #2
0
        def _gen(self, ets):
            def _sk(x):
                k, _ = x
                return -len(k), k  ### longest first, deterministic

            for k, v in sorted(pyk.iteritems(ets), key=_sk):
                head = k.split("/")[0] if "/" in k else ""
                yield Regexp \
                    ("%s\[(?!%s\])" % (re.escape (head), re.escape (v)))
Exemple #3
0
 def name_pattern(self):
     return Regexp \
         ( r"^"
         + "|".join (re.escape (u) for u in sorted (SVG_Color.Map))
         + r"$"
         , re.VERBOSE | re.IGNORECASE
         )
Exemple #4
0
 def name_pattern (self) :
     return Regexp \
         ( r"^"
         + "|".join (re.escape (u) for u in sorted (SVG_Color.Map))
         + r"$"
         , re.VERBOSE | re.IGNORECASE
         )
Exemple #5
0
 def _trailing_unit_pat(self):
     pat = "(?P<unit>%s)\s*$" % \
         ( "|".join
             (   re.escape (u)
             for u in sorted (self.Kind.u_map, key = lambda x : (len (x), x))
             )
         ,
         )
     return Regexp(pat)
Exemple #6
0
 def Pat(cls):
     return Regexp(
         r"^"
         + r"(?P<number> [-+]? \d+ (?: \.\d*)?)"
         + r"(?P<unit>"
         + "|".join(re.escape(u) for u in sorted(cls._Unit_Map))
         + r")"
         + r"$",
         re.VERBOSE | re.IGNORECASE,
     )
Exemple #7
0
 def pattern(self):
     names = sorted \
         ( self.field_map
         , key = lambda x : (- len (x), x)
         )
     return Regexp \
         ( r"(?P<head>^|\W)"
           r"(?P<name>" + "|".join (re.escape (n) for n in names) + ")"
           r"(?P<tail>\W|$)"
         )
Exemple #8
0
 def Pat (cls) :
     return Regexp \
         ( r"^"
         + r"(?P<number> [-+]? \d+ (?: \.\d*)?)"
         + r"(?P<unit>"
         + "|".join (re.escape (u) for u in sorted (cls._Unit_Map))
         + r")"
         + r"$"
         , re.VERBOSE | re.IGNORECASE
         )
Exemple #9
0
 def pattern (self) :
     names = sorted \
         ( self.field_map
         , key = lambda x : (- len (x), x)
         )
     return Regexp \
         ( r"(?P<head>^|\W)"
           r"(?P<name>" + "|".join (re.escape (n) for n in names) + ")"
           r"(?P<tail>\W|$)"
         )
Exemple #10
0
_diacrit_map    = \
    { "Ä"      : "Ae"
    , "Ö"      : "Oe"
    , "Ü"      : "Ue"
    , "ß"      : "ss"
    , "ä"      : "ae"
    , "ö"      : "oe"
    , "ü"      : "ue"
    }

_diacrit_rep = Dict_Replacer(_diacrit_map)

_graph_rep      = Re_Replacer \
    ( "(%s)+"
    % "|".join   (re.escape (c) for c in ("^!$%&([{}]) ?`'*+#:;<>|" '"'))
    , "_"
    )

_non_print_rep  = Re_Replacer \
    ( "|".join (re.escape (chr (i)) for i in ichain (range (0, 32), [127]))
    , ""
    )

_quote_map      = \
    { "«"      : "<<"
    , "»"      : ">>"
    , "´"      : "'"
    , "\u2018" : "'"
    , "\u2019" : "'"
    , "\u201A" : "'"
Exemple #11
0
 def __init__(self,
              option_spec=(),
              arg_spec=(),
              min_args=0,
              max_args=-1,
              description="",
              help_on_err=1,
              exc_on_err=0,
              arg_array=None,
              process_keywords=0):
     self.__super.__init__ \
         (option_spec, arg_spec, min_args, max_args, description)
     if not Command_Line.instance:
         Command_Line.instance = self
     if arg_array is None:
         arg_array = sys.argv
     elif not arg_array:
         return
     if arg_array != sys.argv:
         arg_array = [None] + arg_array
     self.keywords = {}
     self.process_keywords = process_keywords
     try:
         i, j, n = 1, 0, len(arg_array)
         while i < n:
             arg = arg_array[i]
             if arg == "--":
                 self._finish(i + 1, n, j, arg_array)
                 break
             if self.opt_pat.match(arg):
                 match_group = self.opt_pat.group
                 name = match_group("name")
                 value = match_group("value")
                 hpat = re.escape(name)
                 try:
                     option = self.option[name]
                 except KeyError:
                     if re.match(hpat, "help") or re.match(hpat, "?"):
                         print(self.help())
                         if i == 1 and n == 2:
                             raise SystemExit
                     else:
                         matching = self.option.matching_keys(name)
                         if matching and not name[:2] == "__":
                             raise Cmd_Error \
                                 ( "\nAmbiguous option `%s' matches %s\n"
                                 % (name, matching)
                                 )
                         else:
                             raise Cmd_Error("Unknown option `%s'" % name)
                 else:
                     option = self.option[name]
                     if (option.valued and (not value) and (i + 1 < n)):
                         i = i + 1
                         value = arg_array[i]
                         if value and self.opt_pat.match(value):
                             value = None
                     option.set_value(value, i)
                     self.optn = self.optn + 1
             else:
                 j = self._handle_arg(arg, i, j)
             i = i + 1
         # end while i < n
         ### assert (self.argn == j)
         if self._max_args >= 0 and self.argn > self._max_args:
             raise Cmd_Error \
                 ( "%s doesn't accept more than %d arguments"
                 % (self.script_name, self._max_args)
                 )
         if self.argn < self._min_args:
             raise Cmd_Error \
                 ( "%s requires at least %d arguments"
                 % (self.script_name, self._min_args)
                 )
     except KeyboardInterrupt:
         raise
     except Exception as exc:
         print(exc)
         if help_on_err:
             sys.stderr.write("\n%s\n" % (self.help(), ))
             exc_on_err = exc_on_err or self.exc_on_err
             if not exc_on_err:
                 raise SystemExit
         raise
Exemple #12
0
_diacrit_map    = \
    { "Ä"      : "Ae"
    , "Ö"      : "Oe"
    , "Ü"      : "Ue"
    , "ß"      : "ss"
    , "ä"      : "ae"
    , "ö"      : "oe"
    , "ü"      : "ue"
    }

_diacrit_rep    = Dict_Replacer (_diacrit_map)

_graph_rep      = Re_Replacer \
    ( "(%s)+"
    % "|".join   (re.escape (c) for c in ("^!$%&([{}]) ?`'*+#:;<>|" '"'))
    , "_"
    )

_non_print_rep  = Re_Replacer \
    ( "|".join (re.escape (chr (i)) for i in ichain (range (0, 32), [127]))
    , ""
    )

_quote_map      = \
    { "«"      : "<<"
    , "»"      : ">>"
    , "´"      : "'"
    , "\u2018" : "'"
    , "\u2019" : "'"
    , "\u201A" : "'"
Exemple #13
0
 def __init__ ( self
              , option_spec      = ()
              , arg_spec         = ()
              , min_args         = 0
              , max_args         = -1
              , description      = ""
              , help_on_err      = 1
              , exc_on_err       = 0
              , arg_array        = None
              , process_keywords = 0
              ) :
     self.__super.__init__ \
         (option_spec, arg_spec, min_args, max_args, description)
     if not Command_Line.instance :
         Command_Line.instance = self
     if arg_array is None :
         arg_array = sys.argv
     elif not arg_array :
         return
     if arg_array != sys.argv :
         arg_array = [None] + arg_array
     self.keywords = {}
     self.process_keywords = process_keywords
     try :
         i, j, n = 1, 0, len (arg_array)
         while i < n :
             arg = arg_array [i]
             if arg == "--" :
                 self._finish (i + 1, n, j, arg_array)
                 break
             if self.opt_pat.match (arg) :
                 match_group = self.opt_pat.group
                 name  = match_group ("name")
                 value = match_group ("value")
                 hpat  = re.escape   (name)
                 try :
                     option = self.option [name]
                 except KeyError :
                     if re.match (hpat, "help") or re.match (hpat, "?") :
                         print (self.help ())
                         if i == 1 and n == 2 :
                             raise SystemExit
                     else :
                         matching = self.option.matching_keys (name)
                         if matching and not name [:2] == "__" :
                             raise Cmd_Error \
                                 ( "\nAmbiguous option `%s' matches %s\n"
                                 % (name, matching)
                                 )
                         else :
                             raise Cmd_Error ("Unknown option `%s'" % name)
                 else :
                     option = self.option [name]
                     if (option.valued and (not value) and (i + 1 < n)) :
                         i     = i + 1
                         value = arg_array [i]
                         if value and self.opt_pat.match (value) :
                             value = None
                     option.set_value (value, i)
                     self.optn = self.optn + 1
             else :
                 j = self._handle_arg (arg, i, j)
             i = i + 1
         # end while i < n
         ### assert (self.argn == j)
         if self._max_args >= 0 and self.argn > self._max_args :
             raise Cmd_Error \
                 ( "%s doesn't accept more than %d arguments"
                 % (self.script_name, self._max_args)
                 )
         if self.argn < self._min_args :
             raise Cmd_Error \
                 ( "%s requires at least %d arguments"
                 % (self.script_name, self._min_args)
                 )
     except KeyboardInterrupt :
         raise
     except Exception as exc :
         print (exc)
         if help_on_err :
             sys.stderr.write ("\n%s\n" % (self.help (), ))
             exc_on_err = exc_on_err or self.exc_on_err
             if not exc_on_err :
                 raise SystemExit
         raise
Exemple #14
0
from __future__ import print_function, unicode_literals

from _TFL import TFL
from _TFL.pyk import pyk
from _TFL.Regexp import Regexp, Re_Replacer, Dict_Replacer, re

import _TFL.CAO

from itertools import chain as ichain
import unicodedata

_diacrit_map = {"Ä": "Ae", "Ö": "Oe", "Ü": "Ue", "ß": "ss", "ä": "ae", "ö": "oe", "ü": "ue"}

_diacrit_rep = Dict_Replacer(_diacrit_map)

_graph_rep = Re_Replacer("(%s)+" % "|".join(re.escape(c) for c in ("^!$%&([{}]) ?`'*+#:;<>|" '"')), "_")

_non_print_rep = Re_Replacer("|".join(re.escape(chr(i)) for i in ichain(range(0, 32), [127])), "")

_quote_map = {
    "«": "<<",
    "»": ">>",
    "\u2018": "'",
    "\u2019": "'",
    "\u201A": "'",
    "\u201B": "'",
    "\u201C": '"',
    "\u201D": '"',
    "\u201E": '"',
    "\u201F": '"',
    "\u2039": "'",