Sent-ts and tmi-sent-ts tags?

I find it laughable that @scjosh released code under a copyright… I mean really? lol wow.

Feel free to use this for whatever:

function parseTags(message) {
    message = message.trim() + ' ';
    var firstSpace = message.indexOf(' ');
    var rawTags = message
                  .slice(message.charAt(0) === '@' ? 1 : 0, firstSpace)
                  .split(';');
    var tags = {};
    for (var i = 0; i < rawTags.length; i++) {
        var tag = rawTags[i];
        var firstEquals = tag.indexOf('=');
        var key = tag.slice(0, firstEquals);
        var value = tag.slice(firstEquals + 1);
        if(firstEquals === -1) {
            tags[key] = true;
        } else if(/^[0-9]+$/.test(value)) {
            tags[key] = parseInt(value);
        } else {
            value = value
                    .replace(/\\:/g, ';')
                    .replace(/\\s/g, ' ')
                    .replace(/\\\\/g, '\\')
                    .replace(/\\r/g, '\r')
                    .replace(/\\n/g, '\n');
            tags[key] = value;
        }
    }
    return tags;
}

It should cover all cases as outlined in the IRCv3 documentation at http://ircv3.net/specs/core/message-tags-3.2.html

2 Likes