Method code for $code_lib.punctuation_type()

[Turn on line numbering]
arg str;
var end, offset, noses;

end = str.length();
switch (str[end]) {
    case "!":
        return "exclaim";
    case "?":
        return "ask";
    case ".":
        return "say";
    case ")":
        if (end > 1) {
            if (end > 2 && str[end - 1] == "-")
                offset = 2;
            else
                offset = 1;
            switch (str[end - offset]) {
                case ";":
                    return "wink";
                case ":", "=":
                    return "smile";
                case "8":
                    return "grin";
                default:
                    return "say";
            }
        }
    case "(":
        if (end > 1) {
            if (end > 2 && str[end - 1] == "-")
                offset = 2;
            else
                offset = 1;
            if (str[end - offset] in ["=", "8", ":"])
                return "frown";
        }
}
return "say";

// Created 27-Mar-1995 as a part of ColdCore, see: @help Credit

Tlon