Skip to content

Instantly share code, notes, and snippets.

@nickserv
Last active January 31, 2019 22:44
Show Gist options
  • Save nickserv/c764ded4a72b29b37c1fd3fa90c477c0 to your computer and use it in GitHub Desktop.
Save nickserv/c764ded4a72b29b37c1fd3fa90c477c0 to your computer and use it in GitHub Desktop.

Revisions

  1. nickserv revised this gist Jan 31, 2019. 1 changed file with 3 additions and 4 deletions.
    7 changes: 3 additions & 4 deletions giantcrazyfunction.js
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,5 @@
    const getPositions = chatLog => {
    const positions = chatLog.map((message, i) => {
    return chatLog.map((message, i) => {
    const previous = chatLog[i - 1];
    const next = chatLog[i + 1];

    @@ -47,7 +47,7 @@ const getPositions = chatLog => {
    }
    }
    }

    if (!previous && next) {
    // message could be FIRST or ALONE
    return nextIsJoinOrExit || !nextIsFromSameUserAsMessage
    @@ -70,6 +70,5 @@ const getPositions = chatLog => {
    // message is JOIN_OR_EXIT
    return "CENTER";
    }
    });
    return positions.slice().reverse();
    }).reverse();
    };
  2. nickserv revised this gist Jan 31, 2019. 1 changed file with 67 additions and 73 deletions.
    140 changes: 67 additions & 73 deletions giantcrazyfunction.js
    Original file line number Diff line number Diff line change
    @@ -1,81 +1,75 @@
    getPositions = (chatLog) => {
    const positions = chatLog.reduce((acc, message, i) => {
    const previous = chatLog[i - 1];
    const next = chatLog[i + 1];
    const getPositions = chatLog => {
    const positions = chatLog.map((message, i) => {
    const previous = chatLog[i - 1];
    const next = chatLog[i + 1];

    const messageIsJoinOrExit = (message.messageType === 'JOIN_OR_EXIT') ? true : false;
    let previousIsJoinOrExit;
    let nextIsJoinOrExit;
    let previousIsFromSameUserAsMessage;
    let nextIsfromSameUserAsMessage;
    let previousAndNextAreFromSameUser;
    let previousAndNextAreJoinOrExit;
    let position;
    const messageIsJoinOrExit = message.messageType === "JOIN_OR_EXIT";
    let previousIsJoinOrExit;
    let nextIsJoinOrExit;
    let previousIsFromSameUserAsMessage;
    let nextIsfromSameUserAsMessage;
    let previousAndNextAreFromSameUser;
    let previousAndNextAreJoinOrExit;
    let position;

    if (previous) {
    previousIsJoinOrExit = (previous.messageType === 'JOIN_OR_EXIT') ? true : false;
    previousIsFromSameUserAsMessage = (previous.userId === message.userId) ? true : false;
    }
    if (previous) {
    previousIsJoinOrExit = previous.messageType === "JOIN_OR_EXIT";
    previousIsFromSameUserAsMessage = previous.userId === message.userId;
    }

    if (next) {
    nextIsJoinOrExit = (next.messageType === 'JOIN_OR_EXIT') ? true : false;
    nextIsFromSameUserAsMessage = (next.userId === message.userId) ? true : false;
    }
    if (next) {
    nextIsJoinOrExit = next.messageType === "JOIN_OR_EXIT";
    nextIsFromSameUserAsMessage = next.userId === message.userId;
    }

    if (previous && next) {
    previousAndNextAreFromSameUser = (previous.userId === next.userId) ? true : false;
    previousAndNextAreJoinOrExit = (previousIsJoinOrExit && nextIsJoinOrExit) ? true : false;
    }

    if (!messageIsJoinOrExit) {
    if (previous && next) {
    if (previousIsJoinOrExit && nextIsJoinOrExit) {
    // message is ALONE
    acc.push('ALONE');
    } else if (!previousIsJoinOrExit && nextIsJoinOrExit) {
    // message could be LAST or ALONE
    previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('ALONE');
    } else if (previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST or ALONE
    nextIsFromSameUserAsMessage ? acc.push('FIRST') : acc.push('ALONE');
    } else if (!previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST, LAST, ALONE or BETWEEN
    if (previousAndNextAreFromSameUser) {
    previousIsFromSameUserAsMessage ? acc.push('BETWEEN') : acc.push('ALONE');
    } else {
    !previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('FIRST');
    }
    }
    }

    if (!previous && next) {
    // message could be FIRST or ALONE
    if (nextIsJoinOrExit) {
    acc.push('ALONE');
    } else {
    nextIsFromSameUserAsMessage ? acc.push('FIRST') : acc.push('ALONE');
    }
    previousAndNextAreFromSameUser = previous.userId === next.userId;
    previousAndNextAreJoinOrExit = previousIsJoinOrExit && nextIsJoinOrExit;
    }

    if (previous && !next) {
    // message could be LAST or ALONE
    if (previousIsJoinOrExit) {
    acc.push('ALONE');
    } else {
    previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('ALONE');
    }
    }

    if (!previous && !next) {
    // message is ALONE
    acc.push('ALONE');
    }
    } else {
    // message is JOIN_OR_EXIT
    acc.push('CENTER');
    }

    return acc;
    }, []);
    if (!messageIsJoinOrExit) {
    if (previous && next) {
    if (previousIsJoinOrExit && nextIsJoinOrExit) {
    // message is ALONE
    return "ALONE";
    } else if (!previousIsJoinOrExit && nextIsJoinOrExit) {
    // message could be LAST or ALONE
    return previousIsFromSameUserAsMessage ? "LAST" : "ALONE";
    } else if (previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST or ALONE
    return nextIsFromSameUserAsMessage ? "FIRST" : "ALONE";
    } else if (!previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST, LAST, ALONE or BETWEEN
    if (previousAndNextAreFromSameUser) {
    return previousIsFromSameUserAsMessage ? "BETWEEN" : "ALONE";
    } else {
    return !previousIsFromSameUserAsMessage ? "LAST" : "FIRST";
    }
    }
    }

    if (!previous && next) {
    // message could be FIRST or ALONE
    return nextIsJoinOrExit || !nextIsFromSameUserAsMessage
    ? "ALONE"
    : "FIRST";
    }

    if (previous && !next) {
    // message could be LAST or ALONE
    return previousIsJoinOrExit || !previousIsFromSameUserAsMessage
    ? "ALONE"
    : "FIRST";
    }

    if (!previous && !next) {
    // message is ALONE
    return "ALONE";
    }
    } else {
    // message is JOIN_OR_EXIT
    return "CENTER";
    }
    });
    return positions.slice().reverse();
    }
    };
  3. @pivcec pivcec created this gist Jan 31, 2019.
    81 changes: 81 additions & 0 deletions giantcrazyfunction.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,81 @@
    getPositions = (chatLog) => {
    const positions = chatLog.reduce((acc, message, i) => {
    const previous = chatLog[i - 1];
    const next = chatLog[i + 1];

    const messageIsJoinOrExit = (message.messageType === 'JOIN_OR_EXIT') ? true : false;
    let previousIsJoinOrExit;
    let nextIsJoinOrExit;
    let previousIsFromSameUserAsMessage;
    let nextIsfromSameUserAsMessage;
    let previousAndNextAreFromSameUser;
    let previousAndNextAreJoinOrExit;
    let position;

    if (previous) {
    previousIsJoinOrExit = (previous.messageType === 'JOIN_OR_EXIT') ? true : false;
    previousIsFromSameUserAsMessage = (previous.userId === message.userId) ? true : false;
    }

    if (next) {
    nextIsJoinOrExit = (next.messageType === 'JOIN_OR_EXIT') ? true : false;
    nextIsFromSameUserAsMessage = (next.userId === message.userId) ? true : false;
    }

    if (previous && next) {
    previousAndNextAreFromSameUser = (previous.userId === next.userId) ? true : false;
    previousAndNextAreJoinOrExit = (previousIsJoinOrExit && nextIsJoinOrExit) ? true : false;
    }

    if (!messageIsJoinOrExit) {
    if (previous && next) {
    if (previousIsJoinOrExit && nextIsJoinOrExit) {
    // message is ALONE
    acc.push('ALONE');
    } else if (!previousIsJoinOrExit && nextIsJoinOrExit) {
    // message could be LAST or ALONE
    previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('ALONE');
    } else if (previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST or ALONE
    nextIsFromSameUserAsMessage ? acc.push('FIRST') : acc.push('ALONE');
    } else if (!previousIsJoinOrExit && !nextIsJoinOrExit) {
    // message could be FIRST, LAST, ALONE or BETWEEN
    if (previousAndNextAreFromSameUser) {
    previousIsFromSameUserAsMessage ? acc.push('BETWEEN') : acc.push('ALONE');
    } else {
    !previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('FIRST');
    }
    }
    }

    if (!previous && next) {
    // message could be FIRST or ALONE
    if (nextIsJoinOrExit) {
    acc.push('ALONE');
    } else {
    nextIsFromSameUserAsMessage ? acc.push('FIRST') : acc.push('ALONE');
    }
    }

    if (previous && !next) {
    // message could be LAST or ALONE
    if (previousIsJoinOrExit) {
    acc.push('ALONE');
    } else {
    previousIsFromSameUserAsMessage ? acc.push('LAST') : acc.push('ALONE');
    }
    }

    if (!previous && !next) {
    // message is ALONE
    acc.push('ALONE');
    }
    } else {
    // message is JOIN_OR_EXIT
    acc.push('CENTER');
    }

    return acc;
    }, []);
    return positions.slice().reverse();
    }