HookScript :: Munchkin Stack & Shift
by sanford
JavaScript
var munchkinTokenListJSON =
JSON.stringify([
{
token : "aaa-123",
timestamp: 123
},
{
token : "bbb-234",
timestamp: 234
},
{
token : "ccc-345",
timestamp: 345
}
]),
munchkinTokenList = JSON.parse(munchkinTokenListJSON),
munchkinTokenLastShiftJSON =
JSON.stringify(
// { token: "ccc-345",timestamp: 345 }
{ token: "bbb-234", timestamp: 234 }
),
munchkinTokenLastShift = JSON.parse(munchkinTokenLastShiftJSON);
var munchkinTokenNextShift = '',
munchkinTokenNextShiftJSON,
munchkinTokenWorkToDo = '';
// walk backward to find the last matched / pointer
for ( var imax = munchkinTokenList.length, i = imax; i-- ; ) {
console.log(i);
if ( munchkinPropsMatch(munchkinTokenList[i],munchkinTokenLastShift ) ) {
// found matching object, bump i by 1 to find next to work on
i++;
break;
}
}
if ( i >= 0 && i < imax) {
console.log(i,'setting next token');
munchkinTokenNextShift = munchkinTokenList[i];
} else {
if ( i == imax ) {
console.log (i,'last item is also last shifted, ignoring this run');
} else {
console.log (i,'last item not found');
}
}
munchkinTokenNextShiftJSON = JSON.stringify(munchkinTokenNextShift);
munchkinTokenWorkToDo = munchkinPropsToQS(munchkinTokenNextShift);
console.log('final: ','munchkinTokenNextShift=',munchkinTokenNextShift, 'munchkinTokenNextShiftJSON=',munchkinTokenNextShiftJSON, 'munchkinTokenWorkToDo=',munchkinTokenWorkToDo);
// final return
var ret= JSON.stringify ({
munchkinTokenNextShiftJSON : munchkinTokenNextShiftJSON,
munchkinTokenWorkToDo : munchkinTokenWorkToDo
});
console.log(JSON.parse(JSON.parse(ret).munchkinTokenNextShiftJSON).token);
function munchkinPropsMatch(sourceMunchkinToken,targetMunchkinToken){
return (...