impress-2020/src/server/util.js

79 lines
2.2 KiB
JavaScript
Raw Normal View History

2020-04-25 04:33:05 -07:00
function capitalize(str) {
return str[0].toUpperCase() + str.slice(1);
}
2020-05-23 12:47:06 -07:00
function getEmotion(pose) {
if (["HAPPY_MASC", "HAPPY_FEM"].includes(pose)) {
return "HAPPY";
2020-05-23 12:47:06 -07:00
} else if (["SAD_MASC", "SAD_FEM"].includes(pose)) {
return "SAD";
2020-05-23 12:47:06 -07:00
} else if (["SICK_MASC", "SICK_FEM"].includes(pose)) {
return "SICK";
2020-05-23 12:47:06 -07:00
} else if (["UNCONVERTED", "UNKNOWN"].includes(pose)) {
return null;
} else {
2020-05-23 12:47:06 -07:00
throw new Error(`unrecognized pose ${JSON.stringify(pose)}`);
}
}
2020-05-23 12:47:06 -07:00
function getGenderPresentation(pose) {
if (["HAPPY_MASC", "SAD_MASC", "SICK_MASC"].includes(pose)) {
return "MASCULINE";
2020-05-23 12:47:06 -07:00
} else if (["HAPPY_FEM", "SAD_FEM", "SICK_FEM"].includes(pose)) {
return "MASCULINE";
} else if (["UNCONVERTED", "UNKNOWN"].includes(pose)) {
return null;
2020-05-23 12:47:06 -07:00
} else {
throw new Error(`unrecognized pose ${JSON.stringify(pose)}`);
}
}
2020-05-23 12:47:06 -07:00
function getPoseFromPetState(petState) {
const { moodId, female, unconverted } = petState;
if (unconverted) {
2020-05-23 11:48:53 -07:00
return "UNCONVERTED";
2020-05-23 12:47:06 -07:00
} else if (moodId == null || female == null) {
2020-05-23 11:48:53 -07:00
return "UNKNOWN";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "1" && String(female) === "0") {
2020-05-23 11:48:53 -07:00
return "HAPPY_MASC";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "1" && String(female) === "1") {
2020-05-23 11:48:53 -07:00
return "HAPPY_FEM";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "2" && String(female) === "0") {
2020-05-23 11:48:53 -07:00
return "SAD_MASC";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "2" && String(female) === "1") {
2020-05-23 11:48:53 -07:00
return "SAD_FEM";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "4" && String(female) === "0") {
2020-05-23 11:48:53 -07:00
return "SICK_MASC";
2020-05-23 12:47:06 -07:00
} else if (String(moodId) === "4" && String(female) === "1") {
2020-05-23 11:48:53 -07:00
return "SICK_FEM";
} else {
throw new Error(
`could not identify pose: ` +
`moodId=${moodId}, ` +
2020-05-23 12:47:06 -07:00
`female=${female}, ` +
`unconverted=${unconverted}`
2020-05-23 11:48:53 -07:00
);
}
}
2020-05-23 12:47:06 -07:00
function normalizeRow(row) {
const normalizedRow = {};
for (let [key, value] of Object.entries(row)) {
key = key.replace(/_([a-z])/gi, (m) => m[1].toUpperCase());
if ((key === "id" || key.endsWith("Id")) && typeof value === "number") {
value = String(value);
}
normalizedRow[key] = value;
}
return normalizedRow;
}
module.exports = {
capitalize,
getEmotion,
getGenderPresentation,
getPoseFromPetState,
normalizeRow,
};