Last active
January 31, 2019 22:44
-
-
Save nickserv/c764ded4a72b29b37c1fd3fa90c477c0 to your computer and use it in GitHub Desktop.
Revisions
-
nickserv revised this gist
Jan 31, 2019 . 1 changed file with 3 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,5 +1,5 @@ const getPositions = chatLog => { 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"; } }).reverse(); }; -
nickserv revised this gist
Jan 31, 2019 . 1 changed file with 67 additions and 73 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,81 +1,75 @@ 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"; let previousIsJoinOrExit; let nextIsJoinOrExit; let previousIsFromSameUserAsMessage; let nextIsfromSameUserAsMessage; let previousAndNextAreFromSameUser; let previousAndNextAreJoinOrExit; let position; if (previous) { previousIsJoinOrExit = previous.messageType === "JOIN_OR_EXIT"; previousIsFromSameUserAsMessage = previous.userId === message.userId; } if (next) { nextIsJoinOrExit = next.messageType === "JOIN_OR_EXIT"; nextIsFromSameUserAsMessage = next.userId === message.userId; } if (previous && next) { previousAndNextAreFromSameUser = previous.userId === next.userId; previousAndNextAreJoinOrExit = previousIsJoinOrExit && nextIsJoinOrExit; } 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(); }; -
pivcec created this gist
Jan 31, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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(); }