calculate-items
Version:
Items calculation template
46 lines (40 loc) • 1.77 kB
text/typescript
import {ItemsResult, Summary} from "../types/types";
import NumberFormatter from "./NumberFormatter";
export default class ItemsFormatter {
public static formatSummary(result: ItemsResult) {
let str = ''
if (result.summary.members.length > 1) {
str += result.summary.members.reduce((sum, member, ind) => {
sum += `${ind + 1}. ${member.username ? member.username + ': ' : ''} <b>${NumberFormatter.format(member.total)}</b> \n`;
return sum;
}, str);
} else {
str += result.summary.inputText || ''
}
str += `\n-------------\nJami: <b>${NumberFormatter.format(result.summary.total)}</b> `;
if (result.summary.membersCount > 1) {
str += `(${result.summary.membersCount} kishi)`
}
return str;
}
public static calcAndFormatMathJs(text: string) {
const total = NumberFormatter.evaluateAndRound(text)
const formattedInput = text.replace(/([+\-])/g, ' $1 ')
return {
total,
formatted: `${formattedInput}\n-------------\nJami: <b>${NumberFormatter.format(total)}</b> `
}
}
public static formatDetailedSummary(summary: Summary, text: string) {
let result = summary.members.reduce((sum, member, ind) => {
sum += `${ind + 1}. ${member.username || ''} <b>${NumberFormatter.format(member.total)}</b>
<code>${member.productNames?.join(', ')}</code>\n
`;
return sum;
}, '');
result += `-------------\nJami: <b>${NumberFormatter.format(summary.total)}</b> (${summary.membersCount} kishi)
\n\nOriginal text:\n<pre>${text}</pre>
`;
return result;
}
}