URI: 
       zombie - annna - Annna the nice friendly bot.
  HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
       zombie (2538B)
       ---
            1 #!/usr/bin/env python
            2 # coding=utf-8
            3 #
            4 # Copy me if you can.
            5 # by 20h
            6 #
            7 # Idea from: https://github.com/DanPlayz0/Chucky/blob/main/assets/zombie-translator/characters.js
            8 
            9 import os
           10 import sys
           11 import getopt
           12 
           13 zombiemapping = {
           14         "Ar": "a",
           15         "AA": "b",
           16         "Ab": "c",
           17         "RA": "d",
           18         "bb": "e",
           19         "BA": "f",
           20         "ll": "g",
           21         "bG": "h",
           22         "Gn": "i",
           23         "GA": "j",
           24         "GG": "k",
           25         "nh": "l",
           26         "hh": "m",
           27         "MM": "n",
           28         "hr": "o",
           29         "hA": "p",
           30         "hb": "q",
           31         "rr": "r",
           32         "hG": "s",
           33         "Gg": "t",
           34         "GM": "u",
           35         "nr": "v",
           36         "Mr": "w",
           37         "Gl": "x",
           38         "nn": "y",
           39         "KA": "z",
           40         "aR": "A",
           41         "aa": "B",
           42         "aB": "C",
           43         "rA": "D",
           44         "BB": "E",
           45         "ba": "F",
           46         "LL": "G",
           47         "Bg": "H",
           48         "gN": "I",
           49         "ga": "J",
           50         "gg": "K",
           51         "NH": "L",
           52         "HH": "M",
           53         "mm": "N",
           54         "HR": "O",
           55         "Ha": "P",
           56         "HB": "Q",
           57         "RR": "R",
           58         "Hq": "S",
           59         "gG": "T",
           60         "gm": "U",
           61         "NR": "V",
           62         "mR": "W",
           63         "gL": "X",
           64         "NN": "Y",
           65         "ka": "Z"
           66 }
           67 
           68 humanmapping = {
           69         "a": "Ar",
           70         "b": "AA",
           71         "c": "Ab",
           72         "d": "RA",
           73         "e": "bb",
           74         "f": "BA",
           75         "g": "ll",
           76         "h": "bG",
           77         "i": "Gn",
           78         "j": "GA",
           79         "k": "GG",
           80         "l": "nh",
           81         "m": "hh",
           82         "n": "MM",
           83         "o": "hr",
           84         "p": "hA",
           85         "q": "hb",
           86         "r": "rr",
           87         "s": "hG",
           88         "t": "Gg",
           89         "u": "GM",
           90         "v": "nr",
           91         "w": "Mr",
           92         "x": "Gl",
           93         "y": "nn",
           94         "z": "KA",
           95         "A": "aR",
           96         "B": "aa",
           97         "C": "aB",
           98         "D": "ra",
           99         "E": "BB",
          100         "F": "ba",
          101         "G": "LL",
          102         "H": "Bg",
          103         "I": "gN",
          104         "J": "ga",
          105         "K": "gg",
          106         "L": "NH",
          107         "M": "HH",
          108         "N": "mm",
          109         "O": "HR",
          110         "P": "Ha",
          111         "Q": "HB",
          112         "R": "RR",
          113         "S": "Hg",
          114         "T": "gG",
          115         "U": "gm",
          116         "V": "NR",
          117         "W": "mR",
          118         "X": "gL",
          119         "Y": "NN",
          120         "Z": "ka"
          121 }
          122 
          123 def human2zombie(s):
          124         r = ""
          125         for c in s:
          126                 try:
          127                         r += humanmapping[c]
          128                 except KeyError:
          129                         r += c
          130         return r 
          131 
          132 def zombie2human(s):
          133         r = ""
          134         while 1:
          135                 c = s[:2]
          136                 s = s[2:]
          137                 try:
          138                         r += zombiemapping[c]
          139                 except KeyError:
          140                         r += c
          141                 if len(s) == 0:
          142                         break
          143         return r 
          144 
          145 def usage(app):
          146         app = os.path.basename(app)
          147         print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr)
          148         sys.exit(1)
          149 
          150 def main(args):
          151         try:
          152                 opts, largs = getopt.getopt(args[1:], "hed")
          153         except getopt.GetoptError as err:
          154                 print(str(err))
          155                 usage(args[0])
          156 
          157         dodecode=0
          158         doencode=0
          159 
          160         for o, a in opts:
          161                 if o == "-h":
          162                         usage(args[0])
          163                 elif o == "-d":
          164                         dodecode=1
          165                 elif o == "-e":
          166                         doencode=1
          167                 else:
          168                         assert False, "unhandled option"
          169 
          170         ins = sys.stdin.read()
          171         rs = None
          172         words = ins.split(" ")
          173         if doencode:
          174                 rs = " ".join([human2zombie(w) for w in words])
          175         if dodecode:
          176                 rs = " ".join([zombie2human(w) for w in words])
          177         if rs != None:
          178                 print("%s" % (rs), end='')
          179         else:
          180                 usage(args[0])
          181         
          182         return 0
          183 
          184 if __name__ == "__main__":
          185         sys.exit(main(sys.argv))
          186