# HG changeset patch # User Florian Zeitz # Date 1254441895 -7200 # Node ID 8d49732cf7dc72e8f26a43c2bb76dd52d31c0735 # Parent 4f18696f043a95d77fc3ccf61cf005b7feda4edb mod_swedishchef: Initial commit diff -r 4f18696f043a -r 8d49732cf7dc mod_swedishchef/mod_swedishchef.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_swedishchef/mod_swedishchef.lua Fri Oct 02 02:04:55 2009 +0200 @@ -0,0 +1,70 @@ +-- Copyright (C) 2009 Florian Zeitz +-- Copyright (C) 2009 Matthew Wild +-- +-- This project is MIT/X11 licensed. Please see the +-- COPYING file in the source package for more information. +-- +local st = require "util.stanza"; + +local chef = { + { th = "t" }, + + { ow = "o"}, + {["([^%w])o"] = "%1oo", + O = "Oo"}, + + {au = "oo", + u = "oo", U = "Oo"}, + {["([^o])o([^o])"] = "%1u%2"}, + {ir = "ur", + + an = "un", An = "Un", Au = "Oo"}, + + {e = "i", E = "I"}, + + { i = function () return select(math.random(2), "i", "ee"); end }, + + {a = "e", A = "E"}, + + {["e([^%w])"] = "e-a%1"}, + {f = "ff"}, + + {v = "f", V = "F"}, + {w = "v", W = "V"} }; + +function swedish(english) + local eng, url = english:match("(.*)(http://.*)$"); + if eng then english = eng; end + + for _,v in ipairs(chef) do + for k,v in pairs(v) do + english = english:gsub(k,v); + end + end + english = english:gsub("the", "zee"); + english = english:gsub("The", "Zee"); + english = english:gsub("tion", "shun"); + english = english:gsub("[.!?]$", "%1\nBork Bork Bork!"); + return tostring(english..((url and url) or "")); +end + +function check_message(data) + local origin, stanza = data.origin, data.stanza; + + local body, bodyindex; + for k,v in ipairs(stanza) do + if v.name == "body" then + body, bodyindex = v, k; + end + end + + if not body then return; end + body = body:get_text(); + + if body then + stanza[bodyindex][1] = swedish(body); + end +end + +module:hook("message/bare", check_message); +