lib/irc: rename IRC prefix utilities

This commit is contained in:
Simon Ser 2021-06-03 13:18:28 +02:00
parent 04c9f0211a
commit 283f8af4b1
2 changed files with 10 additions and 9 deletions

View File

@ -708,8 +708,8 @@ export default class App extends Component {
this.setBufferState({ server: serverID, name: channel }, (buf) => { this.setBufferState({ server: serverID, name: channel }, (buf) => {
var members = new irc.CaseMapMap(buf.members); var members = new irc.CaseMapMap(buf.members);
membersList.forEach((s) => { membersList.forEach((s) => {
var member = irc.parseMembership(s); var member = irc.parseTargetPrefix(s);
members.set(member.nick, member.prefix); members.set(member.name, member.prefix);
}); });
return { members }; return { members };
@ -1321,7 +1321,7 @@ export default class App extends Component {
var chanmodes = client.isupport.get("CHANMODES") || irc.STD_CHANMODES; var chanmodes = client.isupport.get("CHANMODES") || irc.STD_CHANMODES;
var prefix = client.isupport.get("PREFIX") || ""; var prefix = client.isupport.get("PREFIX") || "";
var prefixByMode = new Map(irc.parseMemberships(prefix).map((membership) => { var prefixByMode = new Map(irc.parseMembershipModes(prefix).map((membership) => {
return [membership.mode, membership.prefix]; return [membership.mode, membership.prefix];
})); }));
@ -1376,7 +1376,7 @@ export default class App extends Component {
var client = this.clients.get(serverID); var client = this.clients.get(serverID);
var prefix = client.isupport.get("PREFIX") || ""; var prefix = client.isupport.get("PREFIX") || "";
var prefixPrivs = new Map(irc.parseMemberships(prefix).map((membership, i) => { var prefixPrivs = new Map(irc.parseMembershipModes(prefix).map((membership, i) => {
return [membership.prefix, i]; return [membership.prefix, i];
})); }));

View File

@ -42,6 +42,7 @@ export const ERR_SASLTOOLONG = "905";
export const ERR_SASLABORTED = "906"; export const ERR_SASLABORTED = "906";
export const ERR_SASLALREADY = "907"; export const ERR_SASLALREADY = "907";
export const STD_MEMBERSHIPS = "~&@%+";
export const STD_CHANNEL_TYPES = "#&+!"; export const STD_CHANNEL_TYPES = "#&+!";
export const STD_CHANMODES = "beI,k,l,imnst"; export const STD_CHANMODES = "beI,k,l,imnst";
@ -208,10 +209,9 @@ export function formatMessage(msg) {
return s; return s;
} }
export function parseMembership(s) { /** Split a prefix and a name out of a target. */
export function parseTargetPrefix(s) {
// TODO: use the PREFIX token from RPL_ISUPPORT // TODO: use the PREFIX token from RPL_ISUPPORT
const STD_MEMBERSHIPS = "~&@%+";
var i; var i;
for (i = 0; i < s.length; i++) { for (i = 0; i < s.length; i++) {
if (STD_MEMBERSHIPS.indexOf(s[i]) < 0) { if (STD_MEMBERSHIPS.indexOf(s[i]) < 0) {
@ -221,7 +221,7 @@ export function parseMembership(s) {
return { return {
prefix: s.slice(0, i), prefix: s.slice(0, i),
nick: s.slice(i), name: s.slice(i),
}; };
} }
@ -514,7 +514,8 @@ export class CaseMapMap {
} }
} }
export function parseMemberships(str) { /** Parse the ISUPPORT PREFIX token */
export function parseMembershipModes(str) {
if (str[0] !== "(") { if (str[0] !== "(") {
throw new Error("malformed ISUPPORT PREFIX value: expected opening parenthesis"); throw new Error("malformed ISUPPORT PREFIX value: expected opening parenthesis");
} }