import { format as dojoFormatNumber } from "dojo/number"; import { format as dojoFormatDate } from "dojo/date/locale"; import { isNumber } from "./safe"; interface NumberFormatOptions { round?: number; pattern?: string; } function formatNumber(value: any, pattern: string) { if (isNumber(value)) { const nopt = {} as NumberFormatOptions; if (pattern.indexOf("!") === 0) { nopt.round = -1; pattern = pattern.substr(1); } nopt.pattern = pattern; return dojoFormatNumber(value, nopt); } } function formatDate(value: any, pattern: string) { if (value instanceof Date) { const m = pattern.match(/^(\w+)-(\w+)$/); if (m) return dojoFormatDate(value, { selector: m[2], formatLength: m[1] }); else if (pattern === "iso") return value.toISOString(); else return dojoFormatDate(value, { selector: "date", datePattern: pattern }); } }