# Caesar Cypher: shift a letter by 3 places to the right.
# This configuration is only used to test features.
#
# Ironically, the "script" side is actually Latin (Roman) in the
# original context, as this was a cryptography method
# used by Julius Caesar. 

general:
  name: ROT3 (Caesar Cypher)

roman_to_script:
  map:
    "A": "D"
    "B": "E"
    "C": "F"
    "D": "G"
    "E": "H"
    "F": "I"
    "G": "J"
    "H": "K"
    "I": "L"
    "J": "M"
    "K": "N"
    "L": "O"
    "M": "P"
    "N": "Q"
    "O": "R"
    "P": "S"
    "Q": "T"
    "R": "U"
    "S": "V"
    "T": "W"
    "U": "X"
    "V": "Y"
    "W": "Z"
    "X": "A"
    "Y": "B"
    "Z": "C"
    "a": "d"
    "b": "e"
    "c": "f"
    "d": "g"
    "e": "h"
    "f": "i"
    "g": "j"
    "h": "k"
    "i": "l"
    "j": "m"
    "k": "n"
    "l": "o"
    "m": "p"
    "n": "q"
    "o": "r"
    "p": "s"
    "q": "t"
    "r": "u"
    "s": "v"
    "t": "w"
    "u": "x"
    "v": "y"
    "w": "z"
    "x": "a"
    "y": "b"
    "z": "c"

script_to_roman:
  # This does the opposite of roman to script, but by using hook functions.
  # Note the absence of a "map" section.
  hooks:
    begin_input_token:
      -
        - test.rotate
        - n: -3