-import re
-
-def rot_string(str, n=13):
- """Return a rotated version of a string
-
- Specifically, this functions returns a version of the input string
- where each uppercase letter has been advanced 'n' positions in the
- alphabet (wrapping around). Lowercase letters and any non-alphabetic
- characters will be unchanged."""
-
- result = ''
- for letter in str:
- if letter.isupper():
- result += chr(ord("A") + (ord(letter) - ord("A") + n) % 26)
- else:
- result += letter
- return result
-
-def rot(args):
- """Implements logic for /rot slash command in Slack, returning a string
-
- This implements the /rot command of our Slack bot. The format of this
- command is as follows:
-
- /rot [count|*] String to be rotated
-
- The optional count indicates an amount to rotate each character in the
- string. If the count is '*' or is not present, then the string will
- be rotated through all possible 25 values.
-
- The result of the rotation is returned as a string (with Slack
- formatting)."""
-
- match = re.match(r'^([0-9]+|\*) (.*)$', args)
- if (match):
- try:
- count = int(match.group(1))
- except ValueError:
- count = None
- text = match.group(2)
- else:
- count = None
- text = args
-
- text = text.upper()
-
- reply = "```/rot {} {}\n".format(count if count else '*', text)
-
- if count:
- reply += rot_string(text, count)
- else:
- reply += "\n".join(["{:02d} ".format(count) + rot_string(text, count)
- for count in range(1, 26)])
-
- reply += "```"
-
- return reply
+from turbot.rot import rot
def lambda_handler(event, context):
"""Top-level entry point for our lambda function.