summaryrefslogtreecommitdiff
path: root/scripts/python/gimmicks.py
blob: 3d8cc962184f0067f0f7abbeecc335296d59a8ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# -*- coding: iso-8859-15 -*-

"""
  :Author: Henning Hasemann <hhasemann [at] web [dot] de>

  Usage:
  
    - Load this plugin
    - In a channel or query type "/flip foo something" to
      send the reversed text "gnihtemos oof"
    - In a channel or query type "/leet something else" to
      send the h4x02-5r!pT - Version of your text.
      (Please use with caution such crap is discouraged in most channels)
  
  Released under GPL licence.
"""

__version__ = "0.1"
__history__ = """
  0.1 initial
"""

short_syntax = """TEXT"""
syntax_flip = """  Example:

  /flip foo bar
    sends "rab oof" to the channel
"""
syntax_leet = """  Example:
  
  /leet eleet
    sends "31337" (or similar) to the channel
"""

import weechat as wc
import string, random

wc.register("gimmicks", __version__, "", "string gimmicks")
wc.add_command_handler("flip", "flip", "", short_syntax, syntax_flip)
wc.add_command_handler("leet", "leet", "", short_syntax, syntax_leet)

leet_dict = {
  "e": ["3"],
  "l": ["1", "!", "|"],
  "r": ["|2"],
  "b": ["8"],
  "v": [r'\/'],
  "t": ["7"],
  "i": ["!"],
  "w": [r'\/\/', 'vv'],
  "a": ["/\\", "<|", "4"],
  "k": ["x"],
  "n": [r'|\|'],
  "s": ["5","$"],
  "q": ["O."],
  "z": ["zZz", "7_"],
  "u": ["(_)"],
  "p": ["|°", "|*"],
  "d": ["|)", "I>", "ol"],
  "f": ["i="],
  "g": ["@"],
  "h": ["|-|"],
  "j": ["_I"],
  "y": ["`/"],
  "x": ["><"],
  "c": ["[", "(", "{"],
  "m": ["|v|", "nn"],
  "o": ["0", "()"],
}

def leet(server, args):
  casechange = True 
  strange = True
  stay = False
  
  r = ""
  luflag = 0
  for x in list(args):
    if stay:
      alt = [x]
    else:
      alt = []
    if casechange:
      alt.append(luflag and x.lower() or x.upper())
      luflag = not luflag
    if strange:
      alt += leet_dict.get(x.lower(), [])
    r += random.choice(alt)
  wc.command(r)
  return 0

def flip(server, args):
  l = list(args)
  l.reverse()
  wc.command("".join(l))
  return 0