Skip to content

Instantly share code, notes, and snippets.

@hogelog
Created March 13, 2012 04:29
Show Gist options
  • Save hogelog/2026759 to your computer and use it in GitHub Desktop.
Save hogelog/2026759 to your computer and use it in GitHub Desktop.
limechat hoge script
function Unpack(alphabets) {
var pack = {
base: alphabets.length,
unpack: function(enc)
{
if (enc.length == 0)
return "";
var base = alphabets.length;
var packs = enc.split(" ");
var dec = "";
for (var i=0,len=packs.length;i<len;++i) {
var pack = packs[i];
var k = 1;
var ns = [];
while (pack.length > 0) {
var n = 0;
for (;n<base;++n) {
var a = alphabets[n];
if (pack.indexOf(a) == 0)
break;
}
if (n < base) {
ns.push(n);
pack = pack.slice(alphabets[n].length);
} else {
pack = pack.slice(1);
}
}
var code = 0;
for (var ni=ns.length-1;ni>=0;--ni) {
code = code * base + ns[ni];
}
dec += String.fromCharCode(code);
}
return dec;
},
packun: function(raw)
{
var base = alphabets.length;
var packs = [];
for (var i=0,len=raw.length;i<len;++i) {
var code = raw.charCodeAt(i);
var codes = "";
while (code != 0) {
var n = code % base;
codes += alphabets[n];
code = Math.floor(code / base);
}
packs.push(codes);
}
return packs.join(" ");
}
};
return pack;
};
var alphabets = [
"うんこ", "うんコ", "うンこ", "うンコ",
"ウんこ", "ウんコ", "ウンこ", "ウンコ",
"ぱく", "ぱク", "パく", "パク"
];
var packer = Unpack(alphabets);
var cmdRegex = /^(\w+):(\w+):(.+)$/;
var commands = {
packun: packer.packun,
unpack: packer.unpack
};
function event::onChannelText(prefix, channel, text)
{
if (cmdRegex.test(text)) {
var nick = RegExp.$1;
var cmd = RegExp.$2;
var arg = RegExp.$3;
if (nick == myNick) {
var fun = commands[cmd];
if (fun != undefined) {
var res = fun(arg);
send(channel, res);
}
}
}
}
// vim: set fenc=utf-8 sw=4 ts=4 et:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment