Mercurial > prosody-modules
comparison mod_swedishchef/mod_swedishchef.lua @ 22:8d49732cf7dc
mod_swedishchef: Initial commit
| author | Florian Zeitz <florob@babelmonkeys.de> |
|---|---|
| date | Fri, 02 Oct 2009 02:04:55 +0200 |
| parents | |
| children | 1fb5b8c20004 |
comparison
equal
deleted
inserted
replaced
| 21:4f18696f043a | 22:8d49732cf7dc |
|---|---|
| 1 -- Copyright (C) 2009 Florian Zeitz | |
| 2 -- Copyright (C) 2009 Matthew Wild | |
| 3 -- | |
| 4 -- This project is MIT/X11 licensed. Please see the | |
| 5 -- COPYING file in the source package for more information. | |
| 6 -- | |
| 7 local st = require "util.stanza"; | |
| 8 | |
| 9 local chef = { | |
| 10 { th = "t" }, | |
| 11 | |
| 12 { ow = "o"}, | |
| 13 {["([^%w])o"] = "%1oo", | |
| 14 O = "Oo"}, | |
| 15 | |
| 16 {au = "oo", | |
| 17 u = "oo", U = "Oo"}, | |
| 18 {["([^o])o([^o])"] = "%1u%2"}, | |
| 19 {ir = "ur", | |
| 20 | |
| 21 an = "un", An = "Un", Au = "Oo"}, | |
| 22 | |
| 23 {e = "i", E = "I"}, | |
| 24 | |
| 25 { i = function () return select(math.random(2), "i", "ee"); end }, | |
| 26 | |
| 27 {a = "e", A = "E"}, | |
| 28 | |
| 29 {["e([^%w])"] = "e-a%1"}, | |
| 30 {f = "ff"}, | |
| 31 | |
| 32 {v = "f", V = "F"}, | |
| 33 {w = "v", W = "V"} }; | |
| 34 | |
| 35 function swedish(english) | |
| 36 local eng, url = english:match("(.*)(http://.*)$"); | |
| 37 if eng then english = eng; end | |
| 38 | |
| 39 for _,v in ipairs(chef) do | |
| 40 for k,v in pairs(v) do | |
| 41 english = english:gsub(k,v); | |
| 42 end | |
| 43 end | |
| 44 english = english:gsub("the", "zee"); | |
| 45 english = english:gsub("The", "Zee"); | |
| 46 english = english:gsub("tion", "shun"); | |
| 47 english = english:gsub("[.!?]$", "%1\nBork Bork Bork!"); | |
| 48 return tostring(english..((url and url) or "")); | |
| 49 end | |
| 50 | |
| 51 function check_message(data) | |
| 52 local origin, stanza = data.origin, data.stanza; | |
| 53 | |
| 54 local body, bodyindex; | |
| 55 for k,v in ipairs(stanza) do | |
| 56 if v.name == "body" then | |
| 57 body, bodyindex = v, k; | |
| 58 end | |
| 59 end | |
| 60 | |
| 61 if not body then return; end | |
| 62 body = body:get_text(); | |
| 63 | |
| 64 if body then | |
| 65 stanza[bodyindex][1] = swedish(body); | |
| 66 end | |
| 67 end | |
| 68 | |
| 69 module:hook("message/bare", check_message); | |
| 70 |
