@@ -0,0 +1,75 @@
|
||||
/** RPL_ISUPPORT (005) token map. */
|
||||
|
||||
function bareIrcParseIsupport(params) {
|
||||
var tokens = {}
|
||||
var list = Array.isArray(params) ? params : []
|
||||
var last = list.length
|
||||
if (last && String(list[last - 1]).indexOf('are supported') >= 0) last--
|
||||
var start = 0
|
||||
if (
|
||||
list.length &&
|
||||
!/=/.test(String(list[0])) &&
|
||||
!/^[A-Z]+$/.test(String(list[0]))
|
||||
) {
|
||||
start = 1
|
||||
}
|
||||
for (var i = start; i < last; i++) {
|
||||
var raw = String(list[i] || '')
|
||||
if (!raw) continue
|
||||
var eq = raw.indexOf('=')
|
||||
if (eq < 0) tokens[raw] = true
|
||||
else tokens[raw.slice(0, eq)] = raw.slice(eq + 1)
|
||||
}
|
||||
return tokens
|
||||
}
|
||||
|
||||
function bareIrcIsupportDefaults() {
|
||||
return {
|
||||
CASEMAPPING: 'rfc1459',
|
||||
CHANTYPES: '#&',
|
||||
PREFIX: '(ov)@+',
|
||||
NICKLEN: '16',
|
||||
CHANNELLEN: '50',
|
||||
TOPICLEN: '390',
|
||||
NETWORK: ''
|
||||
}
|
||||
}
|
||||
|
||||
function bareIrcMergeIsupport(cur, incoming) {
|
||||
var out = cur && typeof cur === 'object' ? cur : bareIrcIsupportDefaults()
|
||||
var next = incoming && typeof incoming === 'object' ? incoming : {}
|
||||
var k
|
||||
for (k in next) {
|
||||
if (Object.prototype.hasOwnProperty.call(next, k)) out[k] = next[k]
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
function bareIrcPrefixMap(isupport) {
|
||||
var raw =
|
||||
isupport && isupport.PREFIX != null ? String(isupport.PREFIX) : '(ov)@+'
|
||||
var m = /^\(([^)]+)\)(.*)$/.exec(raw)
|
||||
var modes = m ? m[1] : 'ov'
|
||||
var prefs = m ? m[2] : '@+'
|
||||
var byMode = {}
|
||||
var byPref = {}
|
||||
var i
|
||||
for (i = 0; i < modes.length && i < prefs.length; i++) {
|
||||
byMode[modes.charAt(i)] = prefs.charAt(i)
|
||||
byPref[prefs.charAt(i)] = modes.charAt(i)
|
||||
}
|
||||
return { modes: modes, prefixes: prefs, byMode: byMode, byPref: byPref }
|
||||
}
|
||||
|
||||
function bareIrcNicklen(isupport) {
|
||||
var n = parseInt(isupport && isupport.NICKLEN, 10)
|
||||
return Number.isFinite(n) && n > 0 ? n : 16
|
||||
}
|
||||
|
||||
function bareIrcChantypes(isupport) {
|
||||
return (isupport && isupport.CHANTYPES) || '#'
|
||||
}
|
||||
|
||||
function bareIrcCasemapping(isupport) {
|
||||
return (isupport && isupport.CASEMAPPING) || 'rfc1459'
|
||||
}
|
||||
Reference in New Issue
Block a user