colloquy-1.35.30/
colloquy-1.35.30/data/lang/
colloquy-1.35.30/data/misc/
colloquy-1.35.30/docs/
-- some stuff to detect swearing etc...
swears = {}

function loadSwearWords(filename)
  local fh = openfile(filename, "r");
  local l = "";
  local word, exclusions;
  local et = {};
  while (l) do
    l = read(fh, "*l");
    if l then
      if strsub(l, 1, 1) ~= "#" then
        null, null, word, exclusions = strfind(l, "^([a-z]*)%:?(.*)$");
        swears[word] = 1;
        exclusions = strlower(exclusions);
        if exclusions then
          et = {};
          local insertExclusion = function(eword)
            %et[eword] = 1;
          end;
          gsub(exclusions, "([a-z]+)", insertExclusion);
          swears[word] = et;
        end;
      end;
    end;
   end;
   closefile(fh)
end;

function checkWord(word)
  local lword = strlower(word);
  for w, k in swears do
    if not (not w or w == "" or type(w) ~= "string") then 
      if strfind(lword, w, 1, 1) then
        -- this word contains a forbidden word
        if swears[w][lword] then
          return word;
        else
          return strrep("*", strlen(word));
        end;
      end;
    end;
  end;
  return word; -- it's OK.
end;

function censor(string)
  return gsub(string, "(%w+)", checkWord)
end